Repolode
DZakh

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. 1

    npm에서 패키지를 설치합니다

    npm install sury
  2. 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 통계는 매일 갱신됩니다.

관련 프로젝트