TypeScript-трансформер, который на этапе сборки превращает обычные типы TypeScript в runtime-валидаторы, JSON-сериализаторы, кодеки protobuf и генераторы случайных данных.
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
Установите пакет из npm
npm install sury - 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 обновляется ежедневно.
Похожие проекты
Библиотека валидации данных для Python: разбирает и проверяет данные по аннотациям типов, используя ядро на Rust.
Стандартная JSON Schema и сервер для описания, проверки и поиска возможностей, навыков, областей и метаданных AI-агентов.
Быстрая библиотека для сериализации и валидации данных в Python: кодирует и декодирует JSON, MessagePack, YAML и TOML с помощью стандартных аннотаций типов.
Веб-компонент для просмотра и редактирования JSON в режимах дерева, кода, текста и предпросмотра, который можно встроить в собственное веб-приложение.
Создаёт типизированные модели и сериализаторы на разных языках по JSON, JSON Schema, TypeScript и GraphQL-запросам.