Repolode
DZakh

DZakh/sury

TypeScriptとReScript向けのスキーマライブラリ。1つの宣言からデータを検証・解析・エンコードでき、JSON、フォームデータ、Protobufなどに対応します。

スター
494
フォーク
15
未解決の Issue
18
最終コミット
一昨日

これは何?

SuryはTypeScriptとReScript向けのスキーマライブラリです。データモデルを一度宣言すれば、同じスキーマを使って信頼できない入力を型付きの値に解析し、型付きの値をワイヤーフォーマットにエンコードし直し、宣言からTypeScriptの型を推論できます。スキーマは連結できるため、base64url文字列やJSONテキストなどのワイヤーフォーマットを、生の入力とモデルの間にあるパイプラインの段階として扱えます。

JSON、JSON文字列、フォームデータ、環境変数、URL search params、base64、Uint8Array、Protobuf、File、Blob用のワイヤーフォーマットが組み込まれています。Protobufスキーマでは.protoファイルもコード生成も不要で、他の利用者向けに.protoファイルを生成することもできます。また、スキーマはStandard SchemaとStandard JSON Schemaを実装しており、JSON Schemaとの相互変換にも対応しています。

このプロジェクトは実行時にスキーマごとの専用JavaScript関数を生成し、それによって高速化を目指しています。スキーマで実行できる操作には、parse、encode、コンストラクターのチェック、等価性判定、比較があります。それぞれ同期版、Promiseベース版、Resultを返す版が用意されています。

主な機能

  • 011つのスキーマ宣言からデータを解析・エンコードし、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 とは?
TypeScriptとReScript向けのスキーマライブラリ。1つの宣言からデータを検証・解析・エンコードでき、JSON、フォームデータ、Protobufなどに対応します。 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 の数値は毎日更新されます。

関連プロジェクト

Webアプリに組み込める、ツリー・コード・テキスト・プレビューの各モードを備えたWebベースのJSONビューア・エディタコンポーネント。

1.2万+1 今週2073JavaScriptApache-2.0活発にメンテナンス更新 6 日前