JSONValibotParser.ts 1.2 KB

12345678910111213141516171819202122232425
  1. import IJSONParser from "../interfaces/IJSONParser.js";
  2. import {BaseIssue, BaseSchema} from "valibot";
  3. /**
  4. * Обший класс для всех парсеров, использующих библиотеку {@link https://valibot.dev/|Valibot} для парсинга JSON-данных в классы и объекты
  5. * @template TSchema Тип схемы, применяемой для парсинга объекта
  6. * @template Out Тип данных, получающихся после парсинга объекта
  7. */
  8. export default abstract class JSONValibotParser<TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>, Out> implements IJSONParser<Out> {
  9. /**
  10. * Схема для валидации JSON-данных
  11. * @protected
  12. */
  13. protected readonly _schema: TSchema;
  14. protected constructor(schema: TSchema) {
  15. this._schema = schema;
  16. }
  17. /**
  18. * Парсинг сырых JSON-данных с помощью {@link _schema|схемы} и возврат обычного объекта типа {@link Out}
  19. * @param input JSON-данных, парсинг которых необходимо провести
  20. */
  21. public abstract parse(input: string): Out;
  22. }