Repolode
DZakh

DZakh/sury

Библиотека схем для TypeScript и ReScript: проверяет, разбирает и кодирует данные по одному описанию в JSON, формах и Protobuf.

Звёзды
494
Форки
15
Открытые issues
18
Последний коммит
3 дня назад

Что это?

Sury — библиотека схем для TypeScript и ReScript. Достаточно один раз описать модель данных: та же схема будет разбирать недоверенный ввод в типизированные значения, кодировать типизированные значения обратно в wire-формат и выводить типы TypeScript из описания. Схемы можно объединять в цепочки: wire-формат, например строка base64url или текст JSON, становится промежуточным этапом между исходными данными и моделью.

В библиотеке есть встроенные wire-форматы для JSON, строк JSON, данных форм, переменных окружения, параметров URL-запроса, base64, Uint8Array, Protobuf, File и Blob. Для схем Protobuf не нужны файлы .proto и генерация кода; при этом они могут сами создавать такие файлы для других инструментов. Схемы также реализуют Standard Schema и Standard JSON Schema, а преобразование JSON Schema поддерживается в обоих направлениях.

Для каждой схемы библиотека во время выполнения генерирует специализированные функции JavaScript — за счёт этого она стремится обеспечить высокую скорость. Для схем доступны разбор, кодирование, проверка конструктора, проверка равенства и сравнение; у каждой операции есть синхронный вариант, вариант на основе Promise и вариант с возвратом Result.

Ключевые возможности

  • 01Разбирает и кодирует данные по единственному описанию схемы, автоматически выводя типы TypeScript.
  • 02Встроенные wire-форматы для строк JSON, данных форм, переменных окружения, Protobuf, base64, File и Blob.
  • 03Поддерживает Standard Schema, поэтому библиотека интегрируется с tRPC, Hono и другими совместимыми библиотеками.
  • 04Преобразует данные в JSON Schema и обратно, а также генерирует определения .proto из схем Protobuf.
  • 05Сообщает обо всех ошибках валидации с указанием пути и выбрасывает исключение для значений, которые JSON.stringify незаметно исказил бы.

Сценарии использования

  • Валидация тел запросов и ответов API на стороне TypeScript-бэкенда или клиента.
  • Разбор и формирование multipart-форм с типизированными полями и файлами.
  • Чтение переменных окружения в типизированную конфигурацию со значениями по умолчанию и валидацией.
  • Кодирование и декодирование сообщений Protobuf без поддержки сгенерированного кода.

Быстрый старт

  1. 1

    Установите пакет из npm

    npm install sury
  2. 2

    Импортируйте библиотеку в код TypeScript и объявите схему

Что важно знать

  • Несколько wire-форматов, включая S.request, S.response, S.capnp, S.rkyv и S.toon, указаны как планируемые и пока недоступны.
  • Импорт JSON Schema проходит около 93% официального набора тестов draft-07, поэтому некоторые схемы могут быть преобразованы не полностью.

Темы

Частые вопросы

Что такое sury?
Библиотека схем для TypeScript и ReScript: проверяет, разбирает и кодирует данные по одному описанию в JSON, формах и Protobuf. Sury — библиотека схем для TypeScript и ReScript. Достаточно один раз описать модель данных: та же схема будет разбирать недоверенный ввод в типизированные значения, кодировать типизированные значения обратно в wire-формат и выводить типы TypeScript из описания. Схемы можно объединять в цепочки: wire-формат, например строка base64url или текст JSON, становится промежуточным этапом между исходными данными и моделью.
sury можно использовать бесплатно? Какая у него лицензия?
sury распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
sury всё ещё поддерживается?
Активно поддерживается. Последний коммит в sury — 5 нояб. 2026 г..
Для чего можно использовать sury?
Валидация тел запросов и ответов API на стороне TypeScript-бэкенда или клиента. Разбор и формирование multipart-форм с типизированными полями и файлами. Чтение переменных окружения в типизированную конфигурацию со значениями по умолчанию и валидацией. Кодирование и декодирование сообщений Protobuf без поддержки сгенерированного кода.
Как установить sury?
Установите пакет из npm: npm install sury Импортируйте библиотеку в код TypeScript и объявите схему
Где скачать sury?
Исходный код и инструкции по установке — на GitHub: https://github.com/DZakh/sury

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

TypeScript-трансформер, который на этапе сборки превращает обычные типы TypeScript в runtime-валидаторы, JSON-сериализаторы, кодеки protobuf и генераторы случайных данных.

6 тыс.+3 за неделю233TypeScriptMITАктивно поддерживаетсяОбновлён вчера

Быстрая библиотека для сериализации и валидации данных в Python: кодирует и декодирует JSON, MessagePack, YAML и TOML с помощью стандартных аннотаций типов.

4,2 тыс.+14 за неделю229PythonBSD-3-ClauseАктивно поддерживаетсяОбновлён вчера

Веб-компонент для просмотра и редактирования JSON в режимах дерева, кода, текста и предпросмотра, который можно встроить в собственное веб-приложение.

12,3 тыс.+1 за неделю2,1 тыс.JavaScriptApache-2.0Обновлён 7 дней назад