純粋なTypeScript型を、実行時バリデーター、JSONシリアライザー、Protocol Bufferコーデック、ランダムデータ生成器にコンパイルするTypeScriptトランスフォーマー。
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
npmからパッケージをインストールします
npm install sury - 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 の数値は毎日更新されます。
関連プロジェクト
型ヒントを使ってデータを解析・検証する、Rustベースのコアを備えたPythonデータ検証ライブラリ。
AIエージェントの能力、スキル、ドメイン、メタデータを記述し、検証や発見を可能にする標準JSONスキーマのフレームワークとサーバー。
標準の型アノテーションを使ってJSON、MessagePack、YAML、TOMLをエンコード・デコードする、高速なPythonシリアライズ・バリデーションライブラリ。
Webアプリに組み込める、ツリー・コード・テキスト・プレビューの各モードを備えたWebベースのJSONビューア・エディタコンポーネント。
JSON、JSON Schema、TypeScript、GraphQLクエリから、さまざまな言語の型付きモデルとシリアライザーを生成します。