import { AbstractResolver } from '@ulangi/resolver'; import * as Joi from 'joi'; import { WiktionaryDefinition } from '../interfaces/WiktionaryDefinition'; import { WiktionaryExampleResolver } from './WiktionaryExampleResolver'; import { WiktionaryQuotationResolver } from './WiktionaryQuotationResolver'; export class WiktionaryDefinitionResolver extends AbstractResolver< WiktionaryDefinition > { private exampleResolver = new WiktionaryExampleResolver(); private quotationResolver = new WiktionaryQuotationResolver(); // We have to lazy because definition is recursive protected rules = { kind: Joi.string().valid('definition'), source: Joi.string(), meaning: Joi.string(), children: Joi.array().items( Joi.lazy((): Joi.ObjectSchema => Joi.object(this.rules)), this.exampleResolver.getRules(), this.quotationResolver.getRules() ), }; }