Skip to content

fix(parser): 삼항 연산자 + 화살표 expression body 파싱 (#446)#449

Merged
ohah merged 1 commit intomainfrom
fix/ternary-arrow-parsing
Mar 27, 2026
Merged

fix(parser): 삼항 연산자 + 화살표 expression body 파싱 (#446)#449
ohah merged 1 commit intomainfrom
fix/ternary-arrow-parsing

Conversation

@ohah
Copy link
Copy Markdown
Owner

@ohah ohah commented Mar 27, 2026

Summary

`a ? v => (expr) : v => (expr2)` 에서 화살표 expression body 뒤의 `:`를 TS typed arrow return type으로 오인하는 파서 버그 수정.

근본 원인

`enterFunctionContext`가 `in_ternary_consequent`를 false로 리셋하여, 화살표 expression body에서 외부 삼항의 `:` 컨텍스트가 유실.

수정

`parseArrowBody`에서 expression body일 때 `in_ternary_consequent`를 외부 값으로 복원.

Test plan

  • `true ? v => (v+1) : v => (v-1)` 파싱 에러 0개
  • d3-array cumsum 패턴 파싱 정상
  • d3 번들: scaleLinear, range, cumsum 모두 function
  • 유닛 테스트 전체 pass

🤖 Generated with Claude Code

`a ? v => (expr) : v => (expr2)` 에서 화살표 expression body 안의
`(expr)` 뒤 `:` 를 TS typed arrow의 return type annotation으로 오인.

원인: enterFunctionContext가 in_ternary_consequent를 false로 리셋하여,
화살표 expression body에서 외부 삼항의 `:` 컨텍스트가 유실됨.

수정: parseArrowBody에서 expression body일 때
in_ternary_consequent를 외부 값으로 복원.

d3-array의 cumsum 함수 파싱 에러 해결.

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

Benchmark Results (CI)

macos-latest

transpile — small (100 lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 4 3 5 1.0x
esbuild 6 5 6 1.5x
Bun 12 7 20 3.0x
oxc (node) 117 81 199 29.3x
SWC 155 123 219 38.8x

transpile — medium (1K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
esbuild 9 7 12 1.0x
Bun 9 7 10 1.0x
ZTS 10 5 20 1.1x
oxc (node) 86 70 119 9.6x
SWC 142 130 157 15.8x

transpile — large (5K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
esbuild 5 5 5 1.0x
ZTS 13 10 23 2.6x
Bun 16 12 20 3.2x
oxc (node) 93 68 121 18.6x
SWC 183 131 228 36.6x

bundle — small (10 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 5 4 6 1.0x
esbuild 10 10 11 2.0x
Bun 12 9 16 2.4x
rspack 161 117 210 32.2x
rolldown 199 144 241 39.8x
webpack 445 365 550 89.0x

bundle — medium (50 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 6 6 7 1.0x
Bun 8 7 8 1.3x
esbuild 9 9 9 1.5x
rolldown 168 131 208 28.0x
rspack 238 159 384 39.7x
webpack 487 426 609 81.2x

bundle — large (200 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 13 11 16 1.0x
ZTS 18 14 28 1.4x
esbuild 24 17 30 1.8x
rolldown 292 198 368 22.5x

ubuntu-latest

transpile — small (100 lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 1 1 1 1.0x
esbuild 2 2 2 2.0x
Bun 2 2 2 2.0x
oxc (node) 28 27 28 28.0x
SWC 89 87 90 89.0x

transpile — medium (1K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
esbuild 2 2 2 1.0x
ZTS 3 3 3 1.5x
Bun 4 4 4 2.0x
oxc (node) 27 27 28 13.5x
SWC 94 93 95 47.0x

transpile — large (5K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
esbuild 2 2 2 1.0x
Bun 10 10 10 5.0x
ZTS 14 14 15 7.0x
oxc (node) 28 27 28 14.0x
SWC 112 109 114 56.0x

bundle — small (10 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 2 2 2 1.0x
Bun 4 4 4 2.0x
esbuild 6 5 6 3.0x
rolldown 103 101 105 51.5x
rspack 108 107 108 54.0x
webpack 513 508 520 256.5x

bundle — medium (50 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 5 5 5 1.0x
ZTS 6 6 6 1.2x
esbuild 7 7 8 1.4x
rolldown 104 103 106 20.8x
rspack 113 113 114 22.6x
webpack 512 508 517 102.4x

bundle — large (200 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 8 8 8 1.0x
esbuild 14 13 15 1.8x
ZTS 32 31 33 4.0x
rolldown 113 112 115 14.1x

windows-latest

transpile — small (100 lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 8 8 9 1.0x
Bun 16 16 16 2.0x
oxc (node) 64 61 68 8.0x

transpile — medium (1K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 10 10 11 1.0x
Bun 17 16 17 1.7x
oxc (node) 65 61 70 6.5x

transpile — large (5K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 18 16 20 1.0x
ZTS 21 19 25 1.2x
oxc (node) 63 61 69 3.5x

bundle — small (10 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 12 12 13 1.0x
Bun 32 30 34 2.7x

bundle — medium (50 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 27 26 29 1.0x
Bun 35 34 36 1.3x

bundle — large (200 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 46 43 48 1.0x
ZTS 91 87 102 2.0x

Auto-generated by CI on 2026-03-27 03:46 UTC

@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 78ms OK 65KB 54ms OK 100KB 489ms MATCH
preact OK 13KB 3ms OK 15KB 7ms OK 13KB 115ms MATCH
date-fns OK 38KB 317ms OK 47KB 37ms OK 78KB 137ms MATCH
uuid OK 2KB 6ms OK 2KB 9ms OK 2KB 118ms MATCH
zod OK 438KB 87ms OK 507KB 31ms OK 90KB 127ms MATCH
axios OK 353KB 48ms FAIL 414KB 28ms OK 377KB 143ms MATCH
toolkit OK 78KB 11ms OK 118KB 18ms OK 38KB 130ms MATCH
rxjs OK 325KB 110ms OK 369KB 38ms OK 309KB 186ms MATCH
immer OK 22KB 5ms OK 26KB 9ms OK 23KB 121ms MATCH
superjson OK 23KB 11ms OK 26KB 11ms OK 24KB 118ms MATCH
express OK 787KB 88ms OK 1129KB 40ms OK 882KB 158ms MATCH
react OK 52KB 6ms OK 64KB 9ms OK 54KB 119ms MATCH
commander OK 70KB 8ms OK 124KB 11ms OK 104KB 127ms MATCH
eventemitter3 OK 6KB 2ms OK 8KB 6ms OK 9KB 104ms MATCH
ms OK 3KB 2ms OK 4KB 6ms OK 4KB 121ms MATCH
dotenv OK 13KB 3ms OK 16KB 7ms OK 13KB 115ms MATCH
jsonwebtoken OK 115KB 29ms OK 139KB 17ms OK 142KB 126ms MATCH
bcryptjs OK 28KB 4ms OK 31KB 8ms OK 37KB 116ms MATCH
clsx OK 1KB 2ms OK 1KB 6ms OK 1KB 115ms MATCH
tiny-invariant OK 0KB 2ms OK 1KB 6ms OK 1KB 113ms MATCH
tanstack-query OK 48KB 10ms OK 57KB 11ms OK 49KB 124ms MATCH
fast-glob OK 164KB 29ms OK 200KB 20ms OK 187KB 129ms MATCH
micromatch OK 81KB 13ms OK 100KB 12ms OK 100KB 124ms MATCH
semver OK 55KB 13ms OK 67KB 11ms OK 52KB 118ms MATCH
debug OK 15KB 4ms OK 20KB 7ms OK 20KB 113ms MATCH
chalk OK 13KB 4ms OK 15KB 8ms OK 14KB 114ms MATCH
yaml OK 209KB 30ms OK 262KB 20ms OK 228KB 140ms MATCH
yargs OK 202KB 23ms FAIL 222KB 18ms OK 202KB 139ms MATCH
effect OK 558KB 436ms OK 477KB 163ms OK 368KB 281ms MATCH
vue OK 1624KB 122ms OK 2008KB 78ms OK 1605KB 279ms MATCH
svelte OK 94KB 24ms OK 5KB 17ms OK 4KB 124ms MATCH
solid-js OK 3KB 4ms OK 2KB 8ms OK 2KB 114ms MATCH
three OK 799KB 79ms OK 414KB 85ms OK 267KB 190ms MATCH
graphql OK 61KB 26ms OK 605KB 34ms OK 547KB 153ms MATCH
supabase OK 334KB 33ms OK 758KB 30ms OK 705KB 157ms MATCH
mobx OK 143KB 12ms OK 271KB 21ms OK 234KB 138ms MATCH
jotai OK 21KB 6ms OK 23KB 8ms OK 20KB 128ms MATCH
valtio OK 7KB 3ms OK 8KB 8ms OK 8KB 117ms MATCH
react-dom OK 530KB 25ms OK 664KB 28ms OK 516KB 150ms MATCH
d3 OK 148KB 128ms OK 99KB 64ms OK 96KB 168ms MATCH
hono OK 45KB 15ms OK 59KB 11ms OK 52KB 117ms MATCH
dayjs OK 11KB 3ms OK 14KB 7ms OK 11KB 107ms MATCH
nanoid OK 1KB 2ms OK 1KB 6ms OK 1KB 116ms MATCH
zlib OK 97KB 11ms OK 112KB 15ms OK 102KB 131ms MATCH
fp-ts OK 18KB 9ms OK 71KB 12ms OK 100KB 125ms MATCH
neverthrow OK 11KB 3ms OK 18KB 7ms OK 13KB 111ms MATCH
drizzle-orm OK 22KB 77ms OK 31KB 22ms OK 26KB 118ms MATCH
tslib OK 22KB 4ms OK 1KB 6ms OK 1KB 108ms MATCH
iconv-lite OK 298KB 12ms OK 546KB 15ms OK 321KB 126ms MATCH
qs OK 78KB 23ms OK 95KB 15ms OK 81KB 122ms MATCH
change-case OK 3KB 2ms OK 3KB 7ms OK 3KB 112ms MATCH
path-to-regexp OK 12KB 3ms OK 15KB 7ms OK 9KB 119ms MATCH
mime-types OK 204KB 4ms OK 235KB 14ms OK 198KB 126ms MATCH
ajv OK 208KB 34ms OK 244KB 21ms OK 208KB 133ms MATCH
cac OK 17KB 3ms OK 20KB 7ms OK 19KB 112ms MATCH
defu OK 2KB 2ms OK 2KB 6ms OK 2KB 114ms MATCH
pathe OK 14KB 3ms OK 3KB 8ms OK 3KB 113ms MATCH
destr OK 2KB 2ms OK 2KB 6ms OK 2KB 110ms MATCH
hookable OK 6KB 2ms OK 6KB 7ms OK 5KB 118ms MATCH
minimatch OK 46KB 7ms OK 57KB 11ms OK 47KB 124ms MATCH
cheerio OK 1721KB 195ms OK 2187KB 100ms OK 1748KB 269ms MATCH
is-glob OK 4KB 2ms OK 6KB 6ms OK 5KB 112ms MATCH
glob-parent OK 6KB 3ms OK 8KB 7ms OK 6KB 122ms MATCH
escape-string-regexp OK 0KB 1ms OK 0KB 7ms OK 0KB 113ms MATCH
fast-deep-equal OK 2KB 2ms OK 3KB 7ms OK 2KB 117ms MATCH
deepmerge OK 4KB 2ms OK 6KB 7ms OK 5KB 111ms MATCH
color-convert OK 26KB 5ms OK 27KB 9ms OK 27KB 114ms MATCH
picomatch OK 48KB 6ms OK 59KB 9ms OK 55KB 118ms MATCH
type-is OK 212KB 5ms OK 245KB 15ms OK 210KB 126ms MATCH
object-assign OK 3KB 2ms OK 4KB 7ms OK 3KB 116ms MATCH
has-flag OK 0KB 1ms OK 0KB 6ms OK 2KB 113ms MATCH
p-limit OK 3KB 2ms OK 4KB 6ms OK 3KB 118ms MATCH
strip-ansi OK 1KB 2ms OK 1KB 6ms OK 1KB 117ms MATCH
ansi-regex OK 0KB 1ms OK 1KB 6ms OK 0KB 113ms MATCH
wrap-ansi OK 26KB 6ms OK 27KB 9ms OK 27KB 122ms MATCH
supports-color OK 4KB 2ms OK 4KB 7ms OK 5KB 119ms MATCH
cross-spawn OK 14KB 5ms OK 18KB 9ms OK 15KB 123ms MATCH
lru-cache OK 21KB 4ms OK 23KB 9ms OK 22KB 116ms MATCH
signal-exit OK 5KB 2ms OK 7KB 7ms OK 7KB 109ms MATCH
which OK 7KB 3ms OK 10KB 7ms OK 8KB 113ms MATCH
string-width OK 10KB 4ms OK 10KB 7ms OK 11KB 119ms MATCH
safe-buffer OK 2KB 2ms OK 4KB 6ms OK 2KB 113ms MATCH
bytes OK 3KB 2ms OK 4KB 6ms OK 4KB 110ms MATCH
depd OK 9KB 2ms OK 12KB 8ms OK 11KB 115ms MATCH
merge-descriptors OK 1KB 1ms OK 2KB 6ms OK 2KB 108ms MATCH
content-type OK 4KB 2ms OK 5KB 7ms OK 4KB 104ms MATCH
cookie OK 8KB 2ms FAIL 10KB 7ms FAIL 11KB 115ms -
on-finished OK 5KB 2ms OK 7KB 7ms OK 7KB 114ms MATCH
statuses OK 4KB 2ms OK 6KB 7ms OK 5KB 105ms MATCH
etag OK 2KB 2ms OK 4KB 7ms OK 3KB 117ms MATCH
vary OK 3KB 2ms OK 4KB 7ms OK 4KB 118ms MATCH
flat OK 1KB 2ms OK 1KB 6ms OK 1KB 109ms MATCH
retry OK 7KB 2ms OK 9KB 7ms OK 7KB 116ms MATCH
camelcase OK 5KB 2ms OK 5KB 7ms OK 6KB 116ms MATCH
decamelize OK 1KB 2ms OK 1KB 6ms OK 1KB 120ms MATCH
memoize-one OK 1KB 2ms OK 3KB 7ms OK 2KB 118ms MATCH
rfdc OK 6KB 2ms OK 8KB 7ms OK 6KB 114ms MATCH
ohash OK 4KB 2ms OK 4KB 7ms OK 4KB 115ms MATCH
nanoevents OK 0KB 2ms OK 1KB 6ms OK 1KB 113ms MATCH
typebox OK 101KB 50ms OK 115KB 27ms OK 122KB 137ms MATCH
ts-pattern OK 10KB 3ms OK 12KB 8ms OK 11KB 115ms MATCH
valibot OK 12KB 11ms OK 7KB 16ms OK 8KB 128ms MATCH
ts-results-es OK 20KB 4ms OK 23KB 8ms OK 30KB 122ms MATCH
remeda OK 2KB 25ms OK 2KB 19ms OK 2KB 127ms MATCH
nanostores OK 5KB 4ms OK 6KB 8ms OK 6KB 113ms MATCH
ky OK 26KB 6ms OK 30KB 9ms OK 30KB 119ms MATCH
typedi OK 13KB 4ms OK 27KB 8ms OK 28KB 117ms MATCH
io-ts OK 30KB 10ms OK 104KB 15ms OK 118KB 127ms MATCH
type-fest OK 0KB 1ms OK 0KB 6ms OK 0KB 110ms MATCH
arktype OK 261KB 63ms OK 297KB 29ms OK 273KB 150ms MATCH
kysely OK 245KB 94ms OK 414KB 41ms OK 396KB 151ms MATCH
lodash-es@es5 OK 14KB 73ms OK 19KB 53ms OK 28KB 146ms MATCH
clsx@es5 OK 1KB 2ms OK 1KB 6ms OK 1KB 109ms MATCH
ms@es5 OK 4KB 2ms OK 4KB 6ms OK 4KB 114ms MATCH
deepmerge@es5 OK 5KB 2ms OK 6KB 7ms OK 5KB 112ms MATCH
fast-deep-equal@es5 OK 2KB 1ms OK 3KB 7ms OK 2KB 117ms MATCH
semver@es5 OK 58KB 12ms OK 67KB 12ms OK 52KB 121ms MATCH
lodash-es@es2015 OK 14KB 71ms OK 19KB 54ms OK 28KB 147ms MATCH
superjson@es2015 OK 23KB 12ms OK 26KB 10ms OK 24KB 122ms MATCH
flat@es2017 OK 1KB 2ms OK 1KB 6ms OK 1KB 112ms MATCH
defu@es2017 OK 2KB 2ms OK 2KB 6ms OK 2KB 112ms MATCH
picomatch@es2018 OK 48KB 6ms OK 59KB 9ms OK 55KB 114ms MATCH
semver@es2019 OK 55KB 13ms OK 67KB 12ms OK 52KB 119ms MATCH
clsx@es2019 OK 1KB 2ms OK 1KB 6ms OK 1KB 107ms MATCH
nanoid@es2019 OK 1KB 2ms OK 1KB 6ms OK 1KB 110ms MATCH
dayjs@es2020 OK 11KB 3ms OK 14KB 8ms OK 11KB 112ms MATCH
ohash@es2020 OK 4KB 2ms OK 4KB 7ms OK 4KB 112ms MATCH
lru-cache@es2021 OK 21KB 4ms OK 23KB 8ms OK 22KB 114ms MATCH
nanostores@es2021 OK 2KB 4ms OK 2KB 8ms OK 2KB 115ms 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 03: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