1 view
vercel-labs/scriptc
TypeScript-to-Native Compiler
TypeScript★ 5,477+102 that day#4 on trending
C57.9/100
Duplication58
6.8% in typescript, c, javascript, c-header, tsx, bash, cpp, perl, pythonDead code100
0%Complexity39
69.1% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
4.32%duplicated code · 12,630 of 292,602 lines
1,246clones in code
311code files of 2,535 scanned
6.46%duplicated over all files · 2,218 clones
Most complex files
- packages/compiler/src/frontend/lowering/lower-calls.ts3267 cx
- packages/compiler/src/frontend/lowering/lower-exprs.ts2997 cx
- packages/compiler/src/backend/c/exprs.ts2875 cx
- packages/compiler/src/frontend/lowering/lower-builtins.ts2824 cx
- packages/compiler/src/frontend/lowering/lowerer.ts2777 cx
- packages/compiler/src/frontend/lowering/lower-stmts.ts2232 cx
- packages/compiler/src/ir/validate.ts2179 cx
- packages/runtime/src/scr_fetch.c1956 cx
- packages/runtime/src/scr_http.c1757 cx
- packages/runtime/src/scr_child.c1697 cx
Dead code 0.01% unused · 3 findings
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code, and 2 generated files: packages/runtime/src/scr_island_manifest.h, packages/runtime/src/scr_text_decoder_data.h.
Largest clones in the code
- 7 lines in 23 placestypescript70 tokenspackages/compiler/src/ir/ir.ts:6510–6516packages/compiler/src/ir/ir.ts:6539–6545packages/compiler/src/ir/ir.ts:6566–6574packages/compiler/src/ir/ir.ts:6630–6636packages/compiler/src/ir/ir.ts:6653–6659and 18 more
6510if (found || v === null || typeof v !== "object") return; 6511if (Array.isArray(v)) { 6512 for (const item of v) visit(item); 6513 return; 6514} 6515const node = v as { kind?: unknown; fn?: unknown }; 6516if (node.kind === "libCall" && typeof node.fn === "string" && PROCESS_EVENT_LIB_FNS.has(node.fn)) {6539if (found || v === null || typeof v !== "object") return; 6540if (Array.isArray(v)) { 6541 for (const item of v) visit(item); 6542 return; 6543} 6544const node = v as { kind?: unknown; fn?: unknown }; 6545if (node.kind === "libCall" && typeof node.fn === "string" && node.fn.startsWith("emitter.")) { - 9 lines in 21 placestypescript66 tokenspackages/compiler/src/ir/ir.ts:6335–6343packages/compiler/src/ir/ir.ts:6372–6380packages/compiler/src/ir/ir.ts:6507–6515packages/compiler/src/ir/ir.ts:6650–6658packages/compiler/src/ir/ir.ts:6675–6683and 16 more
6335export function moduleUsesRegex(mod: IrModule): boolean { 6336 let found = false; 6337 const visit = (v: unknown): void => { 6338 if (found || v === null || typeof v !== "object") return; 6339 if (Array.isArray(v)) { 6340 for (const item of v) visit(item); 6341 return; 6342 } 6343 const kind = (v as { kind?: unknown }).kind;6372export function moduleUsesCopying(mod: IrModule): boolean { 6373 let found = false; 6374 const visit = (v: unknown): void => { 6375 if (found || v === null || typeof v !== "object") return; 6376 if (Array.isArray(v)) { 6377 for (const item of v) visit(item); 6378 return; 6379 } 6380 const node = v as { kind?: unknown; method?: unknown }; - 7 lines in 21 placestypescript59 tokenspackages/compiler/src/ir/ir.ts:6374–6380packages/compiler/src/ir/ir.ts:6462–6468packages/compiler/src/ir/ir.ts:6509–6515packages/compiler/src/ir/ir.ts:6652–6658packages/compiler/src/ir/ir.ts:6677–6683and 16 more
6374const visit = (v: unknown): void => { 6375 if (found || v === null || typeof v !== "object") return; 6376 if (Array.isArray(v)) { 6377 for (const item of v) visit(item); 6378 return; 6379 } 6380 const node = v as { kind?: unknown; method?: unknown };6462const visit = (v: unknown): void => { 6463 if (found || v === null || typeof v !== "object") return; 6464 if (Array.isArray(v)) { 6465 for (const item of v) visit(item); 6466 return; 6467 } 6468 const node = v as { kind?: unknown; op?: unknown; name?: unknown; fn?: unknown };
7 more
- 85 lines in 2 placesc813 tokens
- 14 lines in 15 placestypescript51 tokens
- 51 lines in 2 placesc543 tokens
- 67 lines in 2 placesc529 tokens
- 24 lines in 3 placesc233 tokens
- 9 lines in 9 placestypescript56 tokens
- 6 lines in 9 placestypescript55 tokens
Largest clones over all files, tests and data included
- 738 lines in 2 placesc-header26,511 tokenspackages/runtime/src/scr_text_decoder_data.h:4012–4749packages/runtime/src/scr_text_decoder_data.h:5492–6229
4012static const uint16_t scr_td_jis0208[94 * 94] = { 4013 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b, 0xff1f, 0xff01, 0x309b, 0x309c, 4014 0x00b4, 0xff40, 0x00a8, 0xff3e, 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd, 4015 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c, 0xff5e, 0x2225, 0xff5c, 0x2026, 4016 0x2025, 0x2018, 0x2019, 0x201c, 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b, 4017 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0xff0b, 4018 0xff0d, 0x00b1, 0x00d7, 0x00f7, 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234, 4019 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04, 0xffe0, 0xffe1, 0xff05, 0xff03, 4020 0xff06, 0xff0a, 0xff20, 0x00a7, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 4021 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,First 10 of 738 lines.
- 6999 lines in 2 placestypescripttests13,997 tokenstests/diagnostics/deep-nesting-preflight.ts:2–7000tests/diagnostics/deep-nesting-preflight.ts:3–7001
21 + 31 + 41 + 51 + 61 + 71 + 81 + 91 + 101 + 111 +First 10 of 6999 lines.
- 89 lines in 2 placesc-header3,151 tokenspackages/runtime/src/scr_text_decoder_data.h:2534–2622packages/runtime/src/scr_text_decoder_data.h:6298–6386
25340xe334, 0xe335, 0xe336, 0xe337, 0xe338, 0xe339, 0xe33a, 0xe33b, 0xe33c, 0xe33d, 0xe33e, 0xe33f, 25350xe340, 0xe341, 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, 0xe34a, 0xe34b, 25360xe34c, 0xe34d, 0xe34e, 0xe34f, 0xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 25370xe358, 0xe359, 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, 0xe362, 0xe363, 25380xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f, 25390xe370, 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, 0xe379, 0xe37a, 0xe37b, 25400xe37c, 0xe37d, 0xe37e, 0xe37f, 0xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 25410xe388, 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, 0xe391, 0xe392, 0xe393, 25420xe394, 0xe395, 0xe396, 0xe397, 0xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 25430xe3a0, 0xe3a1, 0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab,62980xe338, 0xe339, 0xe33a, 0xe33b, 0xe33c, 0xe33d, 0xe33e, 0xe33f, 0xe340, 0xe341, 0xe342, 0xe343, 62990xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, 63000xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, 0xe35a, 0xe35b, 63010xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 63020xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f, 0xe370, 0xe371, 0xe372, 0xe373, 63030xe374, 0xe375, 0xe376, 0xe377, 0xe378, 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe37f, 63040xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xe388, 0xe389, 0xe38a, 0xe38b, 63050xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 63060xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, 0xe3a1, 0xe3a2, 0xe3a3, 63070xe3a4, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab, 0xe3ac, 0xe3ad, 0xe3ae, 0xe3af,First 10 of 89 lines, the second copy on the right.
- 60 lines in 2 placesc-header2,121 tokens
- 7 lines in 23 placestypescript70 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 179 | 193,895 | 837 | 8,207 | 4.23% |
| c | 63 | 85,604 | 382 | 4,166 | 4.87% |
| javascript | 47 | 4,557 | 23 | 233 | 5.11% |
| c-header | 6 | 7,143 | 4 | 24 | 0.34% |
| bash | 11 | 779 | 0 | 0 | 0% |
| cpp | 4 | 450 | 0 | 0 | 0% |
| perl | 1 | 174 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 1,832 | 319,220 | 1,623 | 23,009 | 7.21% |
| c | 106 | 92,512 | 450 | 4,919 | 5.32% |
| javascript | 336 | 16,768 | 73 | 1,021 | 6.09% |
| c-header | 8 | 14,685 | 48 | 1,276 | 8.69% |
| txt | 149 | 5,899 | 12 | 100 | 1.7% |
| yaml | 2 | 916 | 10 | 122 | 13.32% |
| json | 51 | 16,802 | 1 | 10 | 0.06% |
| css | 1 | 519 | 1 | 10 | 1.93% |
| tsx | 15 | 1,806 | 0 | 0 | 0% |
| markdown | 13 | 1,273 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Sep 28, 2026 | #4 | 5,477 (+102) | 2,535 | 471,932 | 2,218 | 6.46% | 4.32% | C 57.9 | 6aa732c |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.