import { AbstractResolver } from '@ulangi/resolver'; import * as Joi from 'joi'; import { WiktionaryLanguage } from '../interfaces/WiktionaryLanguage'; import { WiktionaryDefinitionsResolver } from './WiktionaryDefinitionsResolver'; import { WiktionaryEtymologyResolver } from './WiktionaryEtymologyResolver'; import { WiktionaryGlyphOriginResolver } from './WiktionaryGlyphOriginResolver'; import { WiktionaryPronunciationResolver } from './WiktionaryPronunciationResolver'; import { WiktionaryWordClassResolver } from './WiktionaryWordClassResolver'; export class WiktionaryLanguageResolver extends AbstractResolver< WiktionaryLanguage > { private wordClassResolver = new WiktionaryWordClassResolver(); private etymologyResolver = new WiktionaryEtymologyResolver(); private pronunciationResolver = new WiktionaryPronunciationResolver(); private glyphOriginResolver = new WiktionaryGlyphOriginResolver(); private definitionsResolver = new WiktionaryDefinitionsResolver(); protected rules = { languageName: Joi.string(), children: Joi.array().items( this.wordClassResolver.getRules(), this.etymologyResolver.getRules(), this.pronunciationResolver.getRules(), this.glyphOriginResolver.getRules(), this.definitionsResolver.getRules() ), categories: Joi.array().items(Joi.string()), form: Joi.string().optional(), }; }