순수 TypeScript 타입을 런타임 검증기, JSON 직렬화기, Protocol Buffer 코덱 및 랜덤 데이터 생성기로 컴파일하는 TypeScript transformer입니다.
DZakh/sury
한 번의 선언으로 데이터를 검증·파싱·인코딩하고, JSON·폼 데이터·Protobuf 와이어를 지원하는 TypeScript 및 ReScript 스키마 라이브러리입니다.
- 스타
- 494
- 포크
- 15
- 열린 이슈
- 18
- 마지막 커밋
- 그저께
어떤 프로젝트인가요?
Sury는 TypeScript와 ReScript용 스키마 라이브러리입니다. 데이터 모델을 한 번 선언하면 동일한 스키마로 신뢰할 수 없는 입력을 파싱해 타입이 지정된 값으로 만들고, 타입이 지정된 값을 다시 와이어 형식으로 인코딩하며, 선언에서 TypeScript 타입을 추론할 수 있습니다. 스키마를 연결하면 base64url 문자열이나 JSON 텍스트 같은 와이어를 원시 입력과 모델 사이의 파이프라인 단계로 처리할 수 있습니다.
이 라이브러리에는 JSON, JSON 문자열, 폼 데이터, 환경 변수, URL 검색 매개변수, base64, Uint8Array, Protobuf, File, Blob을 위한 와이어가 내장되어 있습니다. Protobuf 스키마는 .proto 파일이나 코드 생성 없이 사용할 수 있으며, 다른 소비자를 위해 .proto 파일을 생성할 수도 있습니다. 스키마는 Standard Schema와 Standard JSON Schema도 구현하며, JSON Schema는 양방향으로 변환할 수 있습니다.
이 프로젝트는 속도를 높이기 위해 각 스키마에 특화된 JavaScript 함수를 런타임에 생성합니다. 스키마에서 실행할 수 있는 작업으로는 parse, encode, 생성자 검사, 동등성 및 비교가 있으며, 각 작업은 동기식, Promise 기반, Result 반환 방식으로 제공됩니다.
핵심 기능
- 01단일 스키마 선언으로 데이터를 파싱하고 인코딩하며, TypeScript 타입을 추론합니다.
- 02JSON 문자열, 폼 데이터, 환경 변수, Protobuf, base64, File/Blob용 와이어가 내장되어 있습니다.
- 03Standard Schema를 지원해 tRPC, Hono 및 이를 지원하는 다른 라이브러리와 연동됩니다.
- 04JSON Schema를 양방향으로 변환하고, Protobuf 스키마에서 .proto 정의를 생성합니다.
- 05경로를 포함해 모든 검증 문제를 보고하며, JSON.stringify가 조용히 손상시킬 값은 예외를 발생시킵니다.
활용 사례
- TypeScript 백엔드나 클라이언트에서 API 요청 및 응답 본문을 검증합니다.
- 타입이 지정된 필드와 파일을 사용해 multipart 폼 제출 데이터를 파싱하고 구성합니다.
- 기본값과 검증을 적용해 환경 변수를 타입이 지정된 설정으로 읽어들입니다.
- 생성된 코드를 유지 관리하지 않고 Protobuf 메시지를 인코딩하고 디코딩합니다.
빠른 시작
- 1
npm에서 패키지를 설치합니다
npm install sury - 2
TypeScript 코드에서 라이브러리를 가져오고 스키마를 선언합니다
사용 전 알아둘 점
- S.request, S.response, S.capnp, S.rkyv, S.toon과 같은 여러 와이어 형식은 향후 지원 예정으로 표시되어 있으며, 아직 사용할 수 없습니다.
- JSON Schema 가져오기는 공식 draft-07 테스트 스위트의 약 93%를 통과하므로 일부 스키마는 완전히 변환되지 않을 수 있습니다.
토픽
자주 묻는 질문
- sury은(는) 무엇인가요?
- 한 번의 선언으로 데이터를 검증·파싱·인코딩하고, JSON·폼 데이터·Protobuf 와이어를 지원하는 TypeScript 및 ReScript 스키마 라이브러리입니다. Sury는 TypeScript와 ReScript용 스키마 라이브러리입니다. 데이터 모델을 한 번 선언하면 동일한 스키마로 신뢰할 수 없는 입력을 파싱해 타입이 지정된 값으로 만들고, 타입이 지정된 값을 다시 와이어 형식으로 인코딩하며, 선언에서 TypeScript 타입을 추론할 수 있습니다. 스키마를 연결하면 base64url 문자열이나 JSON 텍스트 같은 와이어를 원시 입력과 모델 사이의 파이프라인 단계로 처리할 수 있습니다.
- sury은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- sury은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- sury은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. sury의 마지막 커밋은 2026년 11월 5일입니다.
- sury은(는) 어디에 사용할 수 있나요?
- TypeScript 백엔드나 클라이언트에서 API 요청 및 응답 본문을 검증합니다. 타입이 지정된 필드와 파일을 사용해 multipart 폼 제출 데이터를 파싱하고 구성합니다. 기본값과 검증을 적용해 환경 변수를 타입이 지정된 설정으로 읽어들입니다. 생성된 코드를 유지 관리하지 않고 Protobuf 메시지를 인코딩하고 디코딩합니다.
- sury는 어떻게 설치하나요?
- npm에서 패키지를 설치합니다: npm install sury TypeScript 코드에서 라이브러리를 가져오고 스키마를 선언합니다
- sury은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/DZakh/sury
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
타입 힌트로 데이터를 파싱하고 검증하며, Rust 기반 코어를 사용하는 Python 데이터 검증 라이브러리입니다.
AI 에이전트의 역량, 스킬, 도메인 및 메타데이터를 기술해 검증하고 검색할 수 있도록 하는 표준 JSON 스키마 프레임워크이자 서버입니다.
표준 타입 어노테이션을 사용해 JSON, MessagePack, YAML, TOML을 인코딩하고 디코딩하는 빠른 Python 직렬화 및 검증 라이브러리입니다.
웹 앱에 삽입해 사용할 수 있는 트리, 코드, 텍스트, 미리보기 모드의 웹 기반 JSON 뷰어 및 편집기 컴포넌트입니다.
JSON, JSON Schema, TypeScript, GraphQL 쿼리에서 다양한 언어의 타입 모델과 직렬화 코드를 생성합니다.