Skip to content

test(bundler): namespace import 동적 접근 + 변수명 충돌 테스트#443

Merged
ohah merged 1 commit intomainfrom
test/namespace-dynamic-access
Mar 27, 2026
Merged

test(bundler): namespace import 동적 접근 + 변수명 충돌 테스트#443
ohah merged 1 commit intomainfrom
test/namespace-dynamic-access

Conversation

@ohah
Copy link
Copy Markdown
Owner

@ohah ohah commented Mar 27, 2026

Summary

namespace import 관련 수정사항에 대한 통합 테스트 추가.

Tests

  • namespace import 동적 접근 (import * as lib + lib[key])
  • namespace import Object.keys
  • namespace import + for loop 동적 접근 ((lib as any)[k]ts_as_expression unwrap 포함)
  • namespace import 변수명 충돌 방지 (_ns suffix)

Related

  • fix(bundler): namespace import 동적 접근 시 변수 선언 생성 (17e648c)
  • fix(bundler): namespace 변수명 충돌 방지 (0b915d0)
  • fix(transformer): ts_as_expression unwrap 시 symbol_id 덮어쓰기 방지 (fae1f24)

🤖 Generated with Claude Code

- namespace import 동적 접근 (import * as + obj[key])
- namespace import Object.keys
- namespace import + for loop 동적 접근 (as any unwrap 포함)
- namespace import 변수명 충돌 방지 (_ns suffix)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ohah ohah self-assigned this Mar 27, 2026
@ohah ohah merged commit cca3173 into main Mar 27, 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 52ms OK 65KB 47ms OK 100KB 148ms MATCH
preact OK 13KB 3ms OK 15KB 6ms OK 13KB 112ms MATCH
date-fns OK 38KB 260ms OK 47KB 32ms OK 78KB 114ms MATCH
uuid OK 2KB 3ms OK 2KB 6ms OK 2KB 95ms MATCH
zod OK 438KB 64ms OK 507KB 27ms OK 90KB 125ms MATCH
axios OK 353KB 31ms FAIL 414KB 23ms OK 377KB 122ms MATCH
toolkit OK 78KB 9ms OK 118KB 15ms OK 38KB 106ms MATCH
rxjs OK 325KB 69ms OK 369KB 33ms OK 309KB 129ms MATCH
immer OK 22KB 4ms OK 26KB 8ms OK 23KB 104ms MATCH
superjson OK 23KB 8ms OK 26KB 9ms OK 24KB 103ms MATCH
express OK 787KB 55ms OK 1129KB 37ms OK 882KB 147ms MATCH
react OK 52KB 4ms OK 64KB 7ms OK 54KB 102ms MATCH
commander OK 70KB 6ms OK 124KB 10ms OK 104KB 107ms MATCH
eventemitter3 OK 6KB 2ms OK 8KB 5ms OK 9KB 108ms MATCH
ms OK 3KB 1ms OK 4KB 5ms OK 4KB 98ms MATCH
dotenv OK 13KB 2ms OK 16KB 7ms OK 13KB 101ms MATCH
jsonwebtoken OK 115KB 18ms OK 139KB 14ms OK 142KB 110ms MATCH
bcryptjs OK 28KB 3ms OK 31KB 7ms OK 37KB 102ms MATCH
clsx OK 1KB 1ms OK 1KB 5ms OK 1KB 95ms MATCH
tiny-invariant OK 0KB 1ms OK 1KB 5ms OK 1KB 102ms MATCH
tanstack-query OK 48KB 7ms OK 57KB 10ms OK 49KB 111ms MATCH
fast-glob OK 164KB 20ms OK 200KB 17ms OK 187KB 117ms MATCH
micromatch OK 81KB 9ms OK 100KB 10ms OK 100KB 112ms MATCH
semver OK 55KB 9ms OK 67KB 10ms OK 52KB 106ms MATCH
debug OK 15KB 3ms OK 20KB 6ms OK 20KB 99ms MATCH
chalk OK 13KB 3ms OK 15KB 6ms OK 14KB 101ms MATCH
yaml OK 209KB 21ms OK 262KB 18ms OK 228KB 127ms MATCH
yargs OK 202KB 17ms FAIL 222KB 16ms OK 202KB 117ms MATCH
effect OK 558KB 313ms OK 477KB 144ms OK 368KB 250ms MATCH
vue OK 1624KB 97ms OK 2008KB 73ms OK 1605KB 253ms MATCH
svelte OK 94KB 17ms OK 5KB 14ms OK 4KB 103ms MATCH
solid-js OK 3KB 3ms OK 2KB 6ms OK 2KB 105ms MATCH
three OK 799KB 68ms OK 414KB 74ms OK 267KB 179ms MATCH
graphql OK 61KB 19ms OK 605KB 32ms OK 547KB 134ms MATCH
supabase OK 334KB 25ms OK 758KB 28ms OK 705KB 146ms MATCH
mobx OK 143KB 10ms OK 271KB 21ms OK 234KB 130ms MATCH
jotai OK 21KB 4ms OK 23KB 7ms OK 20KB 119ms MATCH
valtio OK 7KB 3ms OK 8KB 7ms OK 8KB 103ms MATCH
react-dom OK 530KB 20ms OK 664KB 26ms OK 516KB 144ms MATCH
d3 OK 148KB 86ms OK 99KB 57ms OK 96KB 146ms MATCH
hono OK 45KB 11ms OK 59KB 9ms OK 52KB 101ms MATCH
dayjs OK 11KB 2ms OK 14KB 6ms OK 11KB 106ms MATCH
nanoid OK 1KB 1ms OK 1KB 5ms OK 1KB 110ms MATCH
zlib OK 97KB 9ms OK 112KB 13ms OK 102KB 121ms MATCH
fp-ts OK 18KB 6ms OK 71KB 10ms OK 100KB 112ms MATCH
neverthrow OK 11KB 2ms OK 18KB 6ms OK 13KB 102ms MATCH
drizzle-orm OK 22KB 65ms OK 31KB 19ms OK 26KB 117ms MATCH
tslib OK 22KB 3ms OK 1KB 6ms OK 1KB 102ms MATCH
iconv-lite OK 298KB 8ms OK 546KB 12ms OK 321KB 116ms MATCH
qs OK 78KB 15ms OK 95KB 12ms OK 81KB 113ms MATCH
change-case OK 3KB 2ms OK 3KB 6ms OK 3KB 103ms MATCH
path-to-regexp OK 12KB 2ms OK 15KB 6ms OK 9KB 97ms MATCH
mime-types OK 204KB 3ms OK 235KB 12ms OK 198KB 103ms MATCH
ajv OK 208KB 23ms OK 244KB 18ms OK 208KB 122ms MATCH
cac OK 17KB 3ms OK 20KB 6ms OK 19KB 110ms MATCH
defu OK 2KB 1ms OK 2KB 5ms OK 2KB 107ms MATCH
pathe OK 14KB 2ms OK 3KB 5ms OK 3KB 97ms MATCH
destr OK 2KB 1ms OK 2KB 5ms OK 2KB 99ms MATCH
hookable OK 6KB 2ms OK 6KB 5ms OK 5KB 99ms MATCH
minimatch OK 46KB 6ms OK 57KB 10ms OK 47KB 116ms MATCH
cheerio OK 1721KB 115ms OK 2187KB 74ms OK 1748KB 236ms MATCH
is-glob OK 4KB 2ms OK 6KB 5ms OK 5KB 96ms MATCH
glob-parent OK 6KB 2ms OK 8KB 6ms OK 6KB 106ms MATCH
escape-string-regexp OK 0KB 1ms OK 0KB 5ms OK 0KB 104ms MATCH
fast-deep-equal OK 2KB 1ms OK 3KB 5ms OK 2KB 104ms MATCH
deepmerge OK 4KB 1ms OK 6KB 6ms OK 5KB 100ms MATCH
color-convert OK 26KB 4ms OK 27KB 7ms OK 27KB 105ms MATCH
picomatch OK 48KB 5ms OK 59KB 8ms OK 55KB 100ms MATCH
type-is OK 212KB 4ms OK 245KB 12ms OK 210KB 105ms MATCH
object-assign OK 3KB 1ms OK 4KB 5ms OK 3KB 99ms MATCH
has-flag OK 0KB 1ms OK 0KB 5ms OK 2KB 108ms MATCH
p-limit OK 3KB 2ms OK 4KB 5ms OK 3KB 104ms MATCH
strip-ansi OK 1KB 1ms OK 1KB 5ms OK 1KB 107ms MATCH
ansi-regex OK 0KB 1ms OK 1KB 5ms OK 0KB 105ms MATCH
wrap-ansi OK 26KB 5ms OK 27KB 7ms OK 27KB 101ms MATCH
supports-color OK 4KB 1ms OK 4KB 5ms OK 5KB 102ms MATCH
cross-spawn OK 14KB 4ms OK 18KB 7ms OK 15KB 102ms MATCH
lru-cache OK 21KB 3ms OK 23KB 7ms OK 22KB 100ms MATCH
signal-exit OK 5KB 2ms OK 7KB 6ms OK 7KB 106ms MATCH
which OK 7KB 2ms OK 10KB 5ms OK 8KB 98ms MATCH
string-width OK 10KB 3ms OK 10KB 6ms OK 11KB 104ms MATCH
safe-buffer OK 2KB 1ms OK 4KB 5ms OK 2KB 96ms MATCH
bytes OK 3KB 1ms OK 4KB 5ms OK 4KB 97ms MATCH
depd OK 9KB 2ms OK 12KB 6ms OK 11KB 103ms MATCH
merge-descriptors OK 1KB 1ms OK 2KB 5ms OK 2KB 96ms MATCH
content-type OK 4KB 1ms OK 5KB 5ms OK 4KB 105ms MATCH
cookie OK 8KB 2ms FAIL 10KB 5ms FAIL 11KB 104ms -
on-finished OK 5KB 2ms OK 7KB 5ms OK 7KB 101ms MATCH
statuses OK 4KB 1ms OK 6KB 5ms OK 5KB 106ms MATCH
etag OK 2KB 1ms OK 4KB 5ms OK 3KB 96ms MATCH
vary OK 3KB 1ms OK 4KB 5ms OK 4KB 94ms MATCH
flat OK 1KB 1ms OK 1KB 5ms OK 1KB 103ms MATCH
retry OK 7KB 2ms OK 9KB 5ms OK 7KB 103ms MATCH
camelcase OK 5KB 1ms OK 5KB 5ms OK 6KB 101ms MATCH
decamelize OK 1KB 1ms OK 1KB 5ms OK 1KB 107ms MATCH
memoize-one OK 1KB 1ms OK 3KB 5ms OK 2KB 97ms MATCH
rfdc OK 6KB 2ms OK 8KB 5ms OK 6KB 105ms MATCH
ohash OK 4KB 2ms OK 4KB 5ms OK 4KB 108ms MATCH
nanoevents OK 0KB 1ms OK 1KB 5ms OK 1KB 99ms MATCH
typebox OK 101KB 35ms OK 115KB 24ms OK 122KB 124ms MATCH
ts-pattern OK 10KB 2ms OK 12KB 6ms OK 11KB 106ms MATCH
valibot OK 12KB 9ms OK 7KB 14ms OK 8KB 111ms MATCH
ts-results-es OK 20KB 4ms OK 23KB 7ms OK 30KB 109ms MATCH
remeda OK 2KB 17ms OK 2KB 15ms OK 2KB 104ms MATCH
nanostores OK 5KB 3ms OK 6KB 6ms OK 6KB 99ms MATCH
ky OK 26KB 4ms OK 30KB 7ms OK 30KB 98ms MATCH
typedi OK 13KB 3ms OK 27KB 6ms OK 28KB 103ms MATCH
io-ts OK 30KB 8ms OK 104KB 13ms OK 118KB 112ms MATCH
type-fest OK 0KB 1ms OK 0KB 5ms OK 0KB 107ms MATCH
arktype OK 261KB 49ms OK 297KB 26ms OK 273KB 132ms MATCH
kysely OK 245KB 62ms OK 414KB 38ms OK 396KB 137ms MATCH
lodash-es@es5 OK 14KB 46ms OK 19KB 47ms OK 28KB 124ms MATCH
clsx@es5 OK 1KB 1ms OK 1KB 5ms OK 1KB 109ms MATCH
ms@es5 OK 4KB 1ms OK 4KB 5ms OK 4KB 103ms MATCH
deepmerge@es5 OK 5KB 1ms OK 6KB 5ms OK 5KB 106ms MATCH
fast-deep-equal@es5 OK 2KB 1ms OK 3KB 5ms OK 2KB 103ms MATCH
semver@es5 OK 58KB 9ms OK 67KB 9ms OK 52KB 103ms MATCH
lodash-es@es2015 OK 14KB 47ms OK 19KB 46ms OK 28KB 130ms MATCH
superjson@es2015 OK 23KB 8ms OK 26KB 9ms OK 24KB 110ms MATCH
flat@es2017 OK 1KB 1ms OK 1KB 5ms OK 1KB 107ms MATCH
defu@es2017 OK 2KB 1ms OK 2KB 5ms OK 2KB 104ms MATCH
picomatch@es2018 OK 48KB 5ms OK 59KB 8ms OK 55KB 114ms MATCH
semver@es2019 OK 55KB 9ms OK 67KB 10ms OK 52KB 112ms MATCH
clsx@es2019 OK 1KB 1ms OK 1KB 5ms OK 1KB 102ms MATCH
nanoid@es2019 OK 1KB 1ms OK 1KB 5ms OK 1KB 98ms MATCH
dayjs@es2020 OK 11KB 2ms OK 14KB 5ms OK 11KB 103ms MATCH
ohash@es2020 OK 4KB 2ms OK 4KB 5ms OK 4KB 102ms MATCH
lru-cache@es2021 OK 21KB 3ms OK 23KB 7ms OK 22KB 103ms MATCH
nanostores@es2021 OK 2KB 3ms OK 2KB 6ms OK 2KB 105ms 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 558KB 477KB 1.17x ⚠️
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
typebox 101KB 115KB 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
zod 438KB 507KB 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
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
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 1721KB 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
fp-ts 18KB 71KB 0.26x
graphql 61KB 605KB 0.10x

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

Auto-generated by CI on 2026-03-27 01:39 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