Skip to content

test: TSC ES downlevel 적합성 테스트 230개 추가#439

Merged
ohah merged 1 commit intomainfrom
test/tsc-downlevel-conformance
Mar 26, 2026
Merged

test: TSC ES downlevel 적합성 테스트 230개 추가#439
ohah merged 1 commit intomainfrom
test/tsc-downlevel-conformance

Conversation

@ohah
Copy link
Copy Markdown
Owner

@ohah ohah commented Mar 26, 2026

Summary

  • TSC references/typescript의 ES 다운레벨링 conformance 테스트 230개를 Bun 통합 테스트로 가져옴
  • 버그 0개, panic 0개 확인

Coverage

카테고리 테스트 수
es5 단일파일 케이스
es2016~es2020 각 ES 버전 기능
emitter/es5, es2015, es2018, es2019 이미터 테스트
async/es5, es6, es2017 async/await 다운레벨링
230개

멀티파일(import) 13개는 단일파일 변환 불가로 제외.

Test plan

  • bun test tests/downlevel-tsc.test.ts — 230/230 pass
  • zig build test — 기존 유닛 테스트 전체 pass

🤖 Generated with Claude Code

TSC references/typescript의 ES 다운레벨링 conformance 테스트를 통합 테스트로 가져옴:
- es5: 단일파일 케이스
- es2016~es2020: 각 ES 버전 기능 테스트
- emitter/es5, emitter/es2015, emitter/es2018, emitter/es2019: 이미터 테스트
- async/es5, async/es6, async/es2017: async/await 다운레벨링 테스트

230개 중 버그 0개, panic 0개 확인.
멀티파일(import) 13개는 단일파일 변환 불가로 제외.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ohah ohah self-assigned this Mar 26, 2026
@ohah ohah merged commit c45074f into main Mar 26, 2026
9 checks passed
@github-actions
Copy link
Copy Markdown

Smoke Test Results (CI)

Smoke Test Results

Project ZTS Size Time esbuild Size Time rolldown Size Time Output
lodash-es OK 51KB 110ms OK 65KB 54ms OK 100KB 357ms MATCH
preact OK 13KB 3ms OK 15KB 8ms OK 13KB 120ms MATCH
date-fns OK 38KB 343ms OK 47KB 36ms OK 78KB 132ms MATCH
uuid OK 2KB 5ms OK 2KB 7ms OK 2KB 107ms MATCH
zod OK 418KB 83ms OK 507KB 30ms OK 90KB 133ms MATCH
axios OK 353KB 49ms FAIL 414KB 27ms OK 377KB 135ms MATCH
toolkit OK 78KB 11ms OK 118KB 16ms OK 38KB 114ms MATCH
rxjs OK 325KB 120ms OK 369KB 44ms OK 309KB 162ms MATCH
immer OK 22KB 5ms OK 26KB 10ms OK 23KB 114ms MATCH
superjson OK 23KB 14ms OK 26KB 12ms OK 24KB 117ms MATCH
express OK 787KB 83ms OK 1129KB 40ms OK 882KB 169ms MATCH
react OK 52KB 5ms OK 64KB 9ms OK 54KB 112ms MATCH
commander OK 70KB 8ms OK 124KB 11ms OK 104KB 117ms MATCH
eventemitter3 OK 6KB 2ms OK 8KB 6ms OK 9KB 106ms MATCH
ms OK 3KB 2ms OK 4KB 6ms OK 4KB 112ms MATCH
dotenv OK 13KB 3ms OK 16KB 6ms OK 13KB 115ms MATCH
jsonwebtoken OK 115KB 28ms OK 139KB 16ms OK 142KB 126ms MATCH
bcryptjs OK 28KB 4ms OK 31KB 8ms OK 37KB 107ms MATCH
clsx OK 1KB 2ms OK 1KB 6ms OK 1KB 103ms MATCH
tiny-invariant OK 0KB 2ms OK 1KB 6ms OK 1KB 110ms MATCH
tanstack-query OK 48KB 9ms OK 57KB 11ms OK 49KB 123ms MATCH
fast-glob OK 164KB 31ms OK 200KB 19ms OK 187KB 128ms MATCH
micromatch OK 81KB 12ms OK 100KB 11ms OK 100KB 114ms MATCH
semver OK 55KB 13ms OK 67KB 11ms OK 52KB 110ms MATCH
debug OK 15KB 4ms OK 20KB 7ms OK 20KB 112ms MATCH
chalk OK 13KB 4ms OK 15KB 7ms OK 14KB 115ms MATCH
yaml OK 209KB 29ms OK 262KB 20ms OK 228KB 133ms MATCH
yargs OK 202KB 23ms FAIL 222KB 18ms OK 202KB 135ms MATCH
effect OK 550KB 428ms OK 477KB 160ms OK 368KB 272ms MATCH
vue OK 1624KB 118ms OK 2008KB 78ms OK 1605KB 257ms MATCH
svelte OK 94KB 25ms OK 5KB 16ms OK 4KB 125ms MATCH
solid-js OK 3KB 3ms OK 2KB 7ms OK 2KB 111ms MATCH
three OK 799KB 80ms OK 414KB 84ms OK 267KB 179ms MATCH
graphql OK 61KB 26ms OK 605KB 34ms OK 547KB 148ms MATCH
supabase OK 334KB 35ms OK 758KB 33ms OK 705KB 151ms MATCH
mobx OK 143KB 12ms OK 271KB 20ms OK 234KB 141ms MATCH
jotai OK 21KB 6ms OK 23KB 8ms OK 20KB 125ms MATCH
valtio OK 7KB 3ms OK 8KB 7ms OK 8KB 110ms MATCH
react-dom OK 530KB 26ms OK 664KB 28ms OK 516KB 154ms MATCH
d3 OK 148KB 128ms OK 99KB 63ms OK 96KB 166ms MATCH
hono OK 45KB 15ms OK 59KB 11ms OK 52KB 126ms MATCH
dayjs OK 11KB 3ms OK 14KB 6ms OK 11KB 109ms MATCH
nanoid OK 1KB 2ms OK 1KB 6ms OK 1KB 110ms MATCH
zlib OK 97KB 11ms OK 112KB 15ms OK 102KB 125ms MATCH
fp-ts OK 0KB 2ms OK 71KB 12ms OK 100KB 117ms MATCH
neverthrow OK 11KB 3ms OK 18KB 7ms OK 13KB 115ms MATCH
drizzle-orm OK 22KB 77ms OK 31KB 21ms OK 26KB 123ms MATCH
tslib OK 22KB 4ms OK 1KB 7ms OK 1KB 108ms MATCH
iconv-lite OK 298KB 10ms OK 546KB 14ms OK 321KB 123ms MATCH
qs OK 78KB 23ms OK 95KB 14ms OK 81KB 126ms MATCH
change-case OK 3KB 2ms OK 3KB 6ms OK 3KB 108ms MATCH
path-to-regexp OK 12KB 3ms OK 15KB 7ms OK 9KB 115ms MATCH
mime-types OK 204KB 3ms OK 235KB 14ms OK 198KB 123ms MATCH
ajv OK 208KB 34ms OK 244KB 20ms OK 208KB 137ms MATCH
cac OK 17KB 3ms OK 20KB 7ms OK 19KB 115ms MATCH
defu OK 2KB 2ms OK 2KB 6ms OK 2KB 108ms MATCH
pathe OK 14KB 3ms OK 3KB 7ms OK 3KB 108ms MATCH
destr OK 2KB 2ms OK 2KB 6ms OK 2KB 106ms MATCH
hookable OK 6KB 2ms OK 6KB 7ms OK 5KB 111ms MATCH
minimatch OK 46KB 7ms OK 57KB 11ms OK 47KB 115ms MATCH
cheerio OK 1722KB 174ms OK 2187KB 80ms OK 1748KB 247ms MATCH
is-glob OK 4KB 2ms OK 6KB 6ms OK 5KB 115ms MATCH
glob-parent OK 6KB 3ms OK 8KB 6ms OK 6KB 114ms MATCH
escape-string-regexp OK 0KB 1ms OK 0KB 6ms OK 0KB 108ms MATCH
fast-deep-equal OK 2KB 2ms OK 3KB 6ms OK 2KB 103ms MATCH
deepmerge OK 4KB 2ms OK 6KB 6ms OK 5KB 109ms MATCH
color-convert OK 26KB 5ms OK 27KB 8ms OK 27KB 119ms MATCH
picomatch OK 48KB 7ms OK 59KB 9ms OK 55KB 115ms MATCH
type-is OK 212KB 5ms OK 245KB 15ms OK 210KB 119ms MATCH
object-assign OK 3KB 2ms OK 4KB 6ms OK 3KB 107ms MATCH
has-flag OK 0KB 1ms OK 0KB 6ms OK 2KB 108ms MATCH
p-limit OK 3KB 2ms OK 4KB 6ms OK 3KB 115ms MATCH
strip-ansi OK 1KB 2ms OK 1KB 6ms OK 1KB 111ms MATCH
ansi-regex OK 0KB 1ms OK 1KB 6ms OK 0KB 108ms MATCH
wrap-ansi OK 26KB 6ms OK 27KB 9ms OK 27KB 112ms MATCH
supports-color OK 4KB 2ms OK 4KB 6ms OK 5KB 107ms MATCH
cross-spawn OK 14KB 5ms OK 18KB 9ms OK 15KB 115ms MATCH
lru-cache OK 21KB 4ms OK 23KB 8ms OK 22KB 112ms MATCH
signal-exit OK 5KB 2ms OK 7KB 6ms OK 7KB 107ms MATCH
which OK 7KB 3ms OK 10KB 7ms OK 8KB 113ms MATCH
string-width OK 10KB 4ms OK 10KB 7ms OK 11KB 109ms MATCH
safe-buffer OK 2KB 2ms OK 4KB 6ms OK 2KB 103ms MATCH
bytes OK 3KB 2ms OK 4KB 6ms OK 4KB 112ms MATCH
depd OK 9KB 2ms OK 12KB 7ms OK 11KB 109ms MATCH
merge-descriptors OK 1KB 1ms OK 2KB 6ms OK 2KB 107ms MATCH
content-type OK 4KB 2ms OK 5KB 6ms OK 4KB 114ms MATCH
cookie OK 8KB 2ms FAIL 10KB 6ms FAIL 11KB 110ms -
on-finished OK 5KB 2ms OK 7KB 7ms OK 7KB 116ms MATCH
statuses OK 4KB 2ms OK 6KB 6ms OK 5KB 108ms MATCH
etag OK 2KB 2ms OK 4KB 6ms OK 3KB 108ms MATCH
vary OK 3KB 2ms OK 4KB 6ms OK 4KB 111ms MATCH
flat OK 1KB 2ms OK 1KB 6ms OK 1KB 110ms MATCH
retry OK 7KB 2ms OK 9KB 6ms OK 7KB 103ms MATCH
camelcase OK 5KB 2ms OK 5KB 6ms OK 6KB 112ms MATCH
decamelize OK 1KB 1ms OK 1KB 6ms OK 1KB 113ms MATCH
memoize-one OK 1KB 2ms OK 3KB 6ms OK 2KB 115ms MATCH
rfdc OK 6KB 2ms OK 8KB 6ms OK 6KB 114ms MATCH
ohash OK 4KB 2ms OK 4KB 6ms OK 4KB 112ms MATCH
nanoevents OK 0KB 2ms OK 1KB 6ms OK 1KB 113ms MATCH
typebox OK 99KB 49ms OK 115KB 28ms OK 122KB 136ms MATCH
ts-pattern OK 10KB 3ms OK 12KB 8ms OK 11KB 112ms MATCH
valibot OK 12KB 11ms OK 7KB 15ms OK 8KB 123ms MATCH
ts-results-es OK 20KB 4ms OK 23KB 7ms OK 30KB 110ms MATCH
remeda OK 2KB 24ms OK 2KB 18ms OK 2KB 119ms MATCH
nanostores OK 5KB 4ms OK 6KB 7ms OK 6KB 113ms MATCH
ky OK 26KB 6ms OK 30KB 9ms OK 30KB 117ms MATCH
typedi OK 13KB 4ms OK 27KB 8ms OK 28KB 115ms MATCH
io-ts OK 30KB 10ms OK 104KB 15ms OK 118KB 122ms MATCH
type-fest OK 0KB 1ms OK 0KB 6ms OK 0KB 108ms MATCH
arktype OK 261KB 63ms OK 297KB 30ms OK 273KB 143ms MATCH
kysely OK 245KB 92ms OK 414KB 41ms OK 396KB 144ms MATCH
lodash-es@es5 OK 14KB 101ms OK 19KB 54ms OK 28KB 145ms MATCH
clsx@es5 OK 1KB 2ms OK 1KB 6ms OK 1KB 116ms MATCH
ms@es5 OK 4KB 2ms OK 4KB 6ms OK 4KB 112ms MATCH
deepmerge@es5 OK 5KB 2ms OK 6KB 6ms OK 5KB 108ms MATCH
fast-deep-equal@es5 OK 2KB 2ms OK 3KB 6ms OK 2KB 111ms MATCH
semver@es5 OK 58KB 13ms OK 67KB 11ms OK 52KB 117ms MATCH
lodash-es@es2015 OK 14KB 101ms OK 19KB 53ms OK 28KB 146ms MATCH
superjson@es2015 OK 23KB 13ms OK 26KB 10ms OK 24KB 119ms MATCH
flat@es2017 OK 1KB 2ms OK 1KB 6ms OK 1KB 114ms MATCH
defu@es2017 OK 2KB 2ms OK 2KB 6ms OK 2KB 112ms MATCH
picomatch@es2018 OK 48KB 6ms OK 59KB 9ms OK 55KB 122ms MATCH
semver@es2019 OK 55KB 12ms OK 67KB 12ms OK 52KB 124ms MATCH
clsx@es2019 OK 1KB 1ms OK 1KB 6ms OK 1KB 110ms MATCH
nanoid@es2019 OK 1KB 2ms OK 1KB 6ms OK 1KB 111ms MATCH
dayjs@es2020 OK 11KB 3ms OK 14KB 7ms OK 11KB 115ms MATCH
ohash@es2020 OK 4KB 2ms OK 4KB 6ms OK 4KB 109ms MATCH
lru-cache@es2021 OK 21KB 4ms OK 23KB 8ms OK 22KB 116ms MATCH
nanostores@es2021 OK 2KB 4ms OK 2KB 7ms OK 2KB 113ms MATCH

Size Comparison (ZTS vs esbuild)

Project ZTS esbuild Ratio Status
tslib 22KB 1KB 25.00x
svelte 94KB 5KB 19.90x
pathe 14KB 3KB 4.05x
three 799KB 414KB 1.93x
valibot 12KB 7KB 1.73x
d3 148KB 99KB 1.49x ⚠️
clsx@es5 1KB 1KB 1.48x ⚠️
solid-js 3KB 2KB 1.17x ⚠️
effect 550KB 477KB 1.15x ⚠️
uuid 2KB 2KB 1.13x ⚠️
hookable 6KB 6KB 1.04x
string-width 10KB 10KB 1.01x
color-convert 26KB 27KB 0.95x
wrap-ansi 26KB 27KB 0.94x
camelcase 5KB 5KB 0.94x
change-case 3KB 3KB 0.93x
supports-color 4KB 4KB 0.93x
remeda 2KB 2KB 0.93x
destr 2KB 2KB 0.92x
lru-cache 21KB 23KB 0.92x
jotai 21KB 23KB 0.92x
superjson@es2015 23KB 26KB 0.92x
lru-cache@es2021 21KB 23KB 0.92x
valtio 7KB 8KB 0.91x
flat 1KB 1KB 0.90x
bcryptjs 28KB 31KB 0.90x
superjson 23KB 26KB 0.89x
flat@es2017 1KB 1KB 0.89x
decamelize 1KB 1KB 0.89x
ky 26KB 30KB 0.88x
rxjs 325KB 369KB 0.88x
arktype 261KB 297KB 0.88x
immer 22KB 26KB 0.88x
ts-pattern 10KB 12KB 0.88x
chalk 13KB 15KB 0.88x
defu 2KB 2KB 0.87x
zlib 97KB 112KB 0.87x
preact 13KB 15KB 0.87x
defu@es2017 2KB 2KB 0.87x
ohash 4KB 4KB 0.87x
mime-types 204KB 235KB 0.87x
deepmerge@es5 5KB 6KB 0.87x
type-is 212KB 245KB 0.87x
clsx 1KB 1KB 0.87x
ts-results-es 20KB 23KB 0.86x
cac 17KB 20KB 0.86x
ohash@es2020 4KB 4KB 0.86x
semver@es5 58KB 67KB 0.86x
p-limit 3KB 4KB 0.86x
typebox 99KB 115KB 0.86x
ajv 208KB 244KB 0.85x
nanostores 5KB 6KB 0.85x
clsx@es2019 1KB 1KB 0.84x
tanstack-query 48KB 57KB 0.84x
jsonwebtoken 115KB 139KB 0.83x
semver 55KB 67KB 0.83x
zod 418KB 507KB 0.82x
qs 78KB 95KB 0.82x
fast-glob 164KB 200KB 0.82x
react 52KB 64KB 0.82x
dotenv 13KB 16KB 0.82x
strip-ansi 1KB 1KB 0.82x
picomatch 48KB 59KB 0.82x
semver@es2019 55KB 67KB 0.82x
picomatch@es2018 48KB 59KB 0.82x
has-flag 0KB 0KB 0.81x
ansi-regex 0KB 1KB 0.81x
micromatch 81KB 100KB 0.81x
path-to-regexp 12KB 15KB 0.81x
ms@es5 4KB 4KB 0.81x
minimatch 46KB 57KB 0.81x
vue 1624KB 2008KB 0.81x
date-fns 38KB 47KB 0.81x
fast-deep-equal@es5 2KB 3KB 0.80x
react-dom 530KB 664KB 0.80x
yaml 209KB 262KB 0.80x
deepmerge 4KB 6KB 0.79x
lodash-es 51KB 65KB 0.79x
eventemitter3 6KB 8KB 0.79x
nanostores@es2021 2KB 2KB 0.79x
cheerio 1722KB 2187KB 0.79x
tiny-invariant 0KB 1KB 0.78x
rfdc 6KB 8KB 0.78x
depd 9KB 12KB 0.78x
retry 7KB 9KB 0.78x
lodash-es@es5 14KB 19KB 0.77x
lodash-es@es2015 14KB 19KB 0.77x
which 7KB 10KB 0.77x
nanoevents 0KB 1KB 0.76x
dayjs 11KB 14KB 0.76x
signal-exit 5KB 7KB 0.76x
hono 45KB 59KB 0.76x
dayjs@es2020 11KB 14KB 0.76x
cross-spawn 14KB 18KB 0.76x
nanoid 1KB 1KB 0.75x
debug 15KB 20KB 0.75x
content-type 4KB 5KB 0.74x
nanoid@es2019 1KB 1KB 0.73x
statuses 4KB 6KB 0.73x
drizzle-orm 22KB 31KB 0.72x
ms 3KB 4KB 0.71x
bytes 3KB 4KB 0.71x
express 787KB 1129KB 0.70x
is-glob 4KB 6KB 0.69x
vary 3KB 4KB 0.69x
on-finished 5KB 7KB 0.68x
glob-parent 6KB 8KB 0.68x
object-assign 3KB 4KB 0.68x
escape-string-regexp 0KB 0KB 0.68x
fast-deep-equal 2KB 3KB 0.66x
toolkit 78KB 118KB 0.66x
etag 2KB 4KB 0.64x
neverthrow 11KB 18KB 0.62x
merge-descriptors 1KB 2KB 0.62x
type-fest 0KB 0KB 0.62x
safe-buffer 2KB 4KB 0.60x
kysely 245KB 414KB 0.59x
commander 70KB 124KB 0.56x
iconv-lite 298KB 546KB 0.55x
mobx 143KB 271KB 0.53x
typedi 13KB 27KB 0.49x
supabase 334KB 758KB 0.44x
memoize-one 1KB 3KB 0.38x
io-ts 30KB 104KB 0.29x
graphql 61KB 605KB 0.10x
fp-ts 0KB 71KB 0.00x

Average ratio: 1.18x | Smaller: 114 | Similar(±10%): 2 | Larger: 10

Auto-generated by CI on 2026-03-26 20:47 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant