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를 유지한 채 일부 방어를 직접 프로퍼티 접근 성능과 맞바꿉니다.
안전한 기본값
own-property descriptor를 읽어 getter 실행을 피하고, strict object는 선언되지 않은 자체 키를 거부합니다.
핫패스 제어
한 번 컴파일해 명시적으로 캐시하거나 AOT 소스를 생성합니다. unsafe와 unchecked는 언제나 선택 사항입니다.
스키마 분석 도구
SeaFlow는 적대적 테스트 케이스를 만들고, SeaBreeze는 관측값을 조인해 작은 추론 스키마로 정리합니다.
측정된 성능
워밍업 이후의 실행 경로를 계약별로 비교합니다.
차트는 저장소에 기록된 벤치마크 결과에서 생성됩니다. safe, unsafe, unchecked, interpreted와 타 라이브러리 경로는 서로 다른 계약으로 구분해 보아야 합니다.
유효 객체 · boolean 가드
초당 실행 횟수 · 워밍업 후 중앙값
| 검증기 | 초당 실행 횟수 |
|---|---|
| TS interpreted | 420592 |
| TS safe | 5103157 |
| TS unsafe | 33092344 |
| TS unchecked | 40373998 |
| Zod | 1291315 |
| Valibot | 1279777 |
| Ajv | 4219206 |
유효 객체 · 진단 생성
초당 실행 횟수 · 워밍업 후 중앙값
| 검증기 | 초당 실행 횟수 |
|---|---|
| TS interpreted | 417305 |
| TS safe | 4319802 |
| TS unsafe | 27269601 |
| TS unchecked | 33987147 |
| Zod | 1282523 |
| Valibot | 1204020 |
| Ajv | 4262427 |
유효하지 않은 객체 · 빠른 실패
초당 실행 횟수 · 워밍업 후 중앙값
| 검증기 | 초당 실행 횟수 |
|---|---|
| TS interpreted | 3095730 |
| TS safe | 42378094 |
| TS unsafe | 50016548 |
| TS unchecked | 50468276 |
| Zod | 82542 |
| Valibot | 928058 |
| Ajv | 29102274 |
유효하지 않은 객체 · 진단 생성
초당 실행 횟수 · 워밍업 후 중앙값
| 검증기 | 초당 실행 횟수 |
|---|---|
| TS interpreted | 35271 |
| TS safe | 1983296 |
| TS unsafe | 2830517 |
| TS unchecked | 3352127 |
| Zod | 76309 |
| Valibot | 895002 |
| Ajv | 29650288 |
기존 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 원본 전체를 그대로 반영합니다.
릴리스 게이트
배포 전에 문서, 공개 API, 패키지 구성, 테스트와 벤치마크를 함께 검사합니다.
pnpm verify · npm run release:check