TypeScript 런타임 검증

TypeSea

컴파일 타입 가드를 제공하는 무의존성 검증 라이브러리.

하나의 불변 스키마로 unknown 입력을 안전하게 좁히고, 경계의 성격에 따라 인터프리터, JIT, AOT, boolean 전용 실행 경로를 선택할 수 있습니다.

npm install typesea
빠른 시작
런타임 의존성
없음
실행 경로
plan · JIT · AOT
모듈 형식
ESM 전용
Node.js
≥ 20.19

빠른 시작

스키마 → 가드 → 컴파일된 검증 함수.

import { compile, t, type Infer } from "typesea";

const User = t.strictObject({
    id: t.string.uuid(),
    age: t.number.int().gte(0),
    role: t.enum(["admin", "user"])
});

type User = Infer<typeof User>;
const isUser = compile(User);

if (isUser(input)) {
    input.id;
}

실행 모델

스키마는 하나, 실행 방식은 명시적으로.

안전 경로는 적대적 입력을 방어합니다. 신뢰된 데이터용 모드는 같은 스키마 API를 유지한 채 일부 방어를 직접 프로퍼티 접근 성능과 맞바꿉니다.

01 불변 스키마
02 검증 계획
03A 인터프리터
03B JIT / AOT

안전한 기본값

own-property descriptor를 읽어 getter 실행을 피하고, strict object는 선언되지 않은 자체 키를 거부합니다.

핫패스 제어

한 번 컴파일해 명시적으로 캐시하거나 AOT 소스를 생성합니다. unsafe와 unchecked는 언제나 선택 사항입니다.

스키마 분석 도구

SeaFlow는 적대적 테스트 케이스를 만들고, SeaBreeze는 관측값을 조인해 작은 추론 스키마로 정리합니다.

측정된 성능

워밍업 이후의 실행 경로를 계약별로 비교합니다.

차트는 저장소에 기록된 벤치마크 결과에서 생성됩니다. safe, unsafe, unchecked, interpreted와 타 라이브러리 경로는 서로 다른 계약으로 구분해 보아야 합니다.

Apple M4 Node v24.13.0 V8 13.6.233.17-node.37 중앙값 · 3회 측정

유효 객체 · boolean 가드

초당 실행 횟수 · 워밍업 후 중앙값

유효 객체 · boolean 가드
검증기초당 실행 횟수
TS interpreted420592
TS safe5103157
TS unsafe33092344
TS unchecked40373998
Zod1291315
Valibot1279777
Ajv4219206

유효 객체 · 진단 생성

초당 실행 횟수 · 워밍업 후 중앙값

유효 객체 · 진단 생성
검증기초당 실행 횟수
TS interpreted417305
TS safe4319802
TS unsafe27269601
TS unchecked33987147
Zod1282523
Valibot1204020
Ajv4262427

유효하지 않은 객체 · 빠른 실패

초당 실행 횟수 · 워밍업 후 중앙값

유효하지 않은 객체 · 빠른 실패
검증기초당 실행 횟수
TS interpreted3095730
TS safe42378094
TS unsafe50016548
TS unchecked50468276
Zod82542
Valibot928058
Ajv29102274

유효하지 않은 객체 · 진단 생성

초당 실행 횟수 · 워밍업 후 중앙값

유효하지 않은 객체 · 진단 생성
검증기초당 실행 횟수
TS interpreted35271
TS safe1983296
TS unsafe2830517
TS unchecked3352127
Zod76309
Valibot895002
Ajv29650288
측정 방법과 원본 데이터

기존 Zod 형태의 코드

호출부를 다시 쓰지 않고 호환 파사드를 시험할 수 있습니다.

파사드는 호환 계층으로 문서화하며, TypeSea 고유 builder에서는 컴파일러와 분석 기능을 직접 사용할 수 있습니다.

API 레퍼런스
// 기존 import
import { z } from "zod";

// TypeSea 호환 계층 적용
import { z } from "typesea/v4";

const User = z.object({
    id: z.string().uuid(),
    email: z.string().email()
}).strict();

문서 모음

유지보수 중인 모든 문서를 작업별로 정리했습니다.

SvelteKit 빌드가 루트 README와 영어·한국어 Markdown 원본 전체를 그대로 반영합니다.

README

프로젝트 목표, 빠른 시작, 실행 모드, 벤치마크와 릴리스 절차를 설명합니다.

API 레퍼런스

Builder, guard, decoder, 컴파일, 어댑터, JSON Schema와 Result 계약을 정리합니다.

Zod 호환성 코퍼스

고정된 공개 소스의 API 사용량과 import 교체 컴파일 결과를 기록합니다.

SeaFlow 퍼저

스키마를 역으로 해석해 경곗값, 구조 오류와 적대적 입력을 생성합니다.

SeaBreeze 추론

관측값을 arena 기반 principal join으로 합쳐 작은 스키마를 추론합니다.

엔진 설계 노트

핫패스 규칙, 검증 IR, 컴파일러 동작, 재귀와 벤치마크 범위를 다룹니다.

릴리스 게이트

배포 전에 문서, 공개 API, 패키지 구성, 테스트와 벤치마크를 함께 검사합니다.

pnpm verify · npm run release:check