├── .gitignore ├── packages ├── typeslayer │ ├── src │ │ ├── components │ │ │ ├── types-list.tsx │ │ │ ├── constants.tsx │ │ │ ├── no-data.tsx │ │ │ ├── center-loader.tsx │ │ │ ├── inline-code.tsx │ │ │ ├── stat-pill.tsx │ │ │ ├── callout.tsx │ │ │ ├── show-more.tsx │ │ │ ├── show-more-children.tsx │ │ │ ├── tab-label.tsx │ │ │ ├── openable-path.tsx │ │ │ ├── action-bar.tsx │ │ │ └── auth-gate.tsx │ │ ├── svg.d.ts │ │ ├── assets │ │ │ ├── ts.png │ │ │ ├── typeslayer.png │ │ │ ├── dimitropoulos.png │ │ │ ├── ts-nightmare.png │ │ │ ├── typeslayer-icon.png │ │ │ └── typeslayer-nightmare.png │ │ ├── index.html │ │ ├── types │ │ │ ├── tauri-plugin-upload.d.ts │ │ │ └── type-graph.ts │ │ ├── pages │ │ │ ├── award-winners │ │ │ │ ├── title-subtitle.tsx │ │ │ │ ├── inline-bar-graph.tsx │ │ │ │ ├── use-award-id.ts │ │ │ │ ├── award-nav-item.tsx │ │ │ │ ├── award-winners.tsx │ │ │ │ └── performance-metrics.tsx │ │ │ ├── start │ │ │ │ ├── step.tsx │ │ │ │ ├── step-1-packagejson.tsx │ │ │ │ ├── start.tsx │ │ │ │ └── error-dialog.tsx │ │ │ ├── cicd-integration.tsx │ │ │ ├── speedscope.tsx │ │ │ └── perfetto.tsx │ │ ├── main.tsx │ │ ├── shikiTheme.ts │ │ └── contexts │ │ │ └── toast-context.tsx │ ├── .gitignore │ ├── src-tauri │ │ ├── build.rs │ │ ├── src │ │ │ ├── validate │ │ │ │ ├── mod.rs │ │ │ │ └── utils.rs │ │ │ ├── analyze_trace │ │ │ │ ├── constants.rs │ │ │ │ ├── node_module_paths.rs │ │ │ │ ├── duplicate_node_modules.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── types.rs │ │ │ │ └── depth_limits.rs │ │ │ ├── log.rs │ │ │ ├── mcp │ │ │ │ ├── tools │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── get_hot_files.rs │ │ │ │ │ └── get_depth_limits.rs │ │ │ │ └── status.rs │ │ │ ├── http_server.rs │ │ │ ├── utils.rs │ │ │ ├── main.rs │ │ │ ├── process_controller.rs │ │ │ ├── screenshot.rs │ │ │ ├── treemap.rs │ │ │ └── auth.rs │ │ ├── icons │ │ │ ├── icon.ico │ │ │ ├── icon.png │ │ │ ├── 32x32.png │ │ │ ├── 64x64.png │ │ │ ├── icon.icns │ │ │ ├── 128x128.png │ │ │ ├── StoreLogo.png │ │ │ ├── 128x128@2x.png │ │ │ ├── Square30x30Logo.png │ │ │ ├── Square44x44Logo.png │ │ │ ├── Square71x71Logo.png │ │ │ ├── Square89x89Logo.png │ │ │ ├── Square107x107Logo.png │ │ │ ├── Square142x142Logo.png │ │ │ ├── Square150x150Logo.png │ │ │ ├── Square284x284Logo.png │ │ │ ├── Square310x310Logo.png │ │ │ ├── ios │ │ │ │ ├── AppIcon-512@2x.png │ │ │ │ ├── AppIcon-20x20@1x.png │ │ │ │ ├── AppIcon-20x20@2x.png │ │ │ │ ├── AppIcon-20x20@3x.png │ │ │ │ ├── AppIcon-29x29@1x.png │ │ │ │ ├── AppIcon-29x29@2x.png │ │ │ │ ├── AppIcon-29x29@3x.png │ │ │ │ ├── AppIcon-40x40@1x.png │ │ │ │ ├── AppIcon-40x40@2x.png │ │ │ │ ├── AppIcon-40x40@3x.png │ │ │ │ ├── AppIcon-60x60@2x.png │ │ │ │ ├── AppIcon-60x60@3x.png │ │ │ │ ├── AppIcon-76x76@1x.png │ │ │ │ ├── AppIcon-76x76@2x.png │ │ │ │ ├── AppIcon-20x20@2x-1.png │ │ │ │ ├── AppIcon-29x29@2x-1.png │ │ │ │ ├── AppIcon-40x40@2x-1.png │ │ │ │ └── AppIcon-83.5x83.5@2x.png │ │ │ └── android │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── values │ │ │ │ └── ic_launcher_background.xml │ │ │ │ └── mipmap-anydpi-v26 │ │ │ │ └── ic_launcher.xml │ │ ├── gen │ │ │ └── schemas │ │ │ │ └── capabilities.json │ │ ├── capabilities │ │ │ └── default.json │ │ ├── tauri.conf.json │ │ └── Cargo.toml │ ├── public │ │ ├── speedscope-ui │ │ │ ├── release.txt │ │ │ ├── jfrview_bg-BLJXNNQB.wasm │ │ │ ├── SourceCodePro-Regular.ttf-ILST5JV6.woff2 │ │ │ ├── index.html │ │ │ ├── speedscope-GHPHNKXC.css │ │ │ └── source-code-pro.LICENSE.md │ │ └── perfetto-ui │ │ │ └── v53.0-867ef5020 │ │ │ ├── traceconv.wasm │ │ │ ├── assets │ │ │ ├── brand.png │ │ │ ├── favicon.png │ │ │ ├── logo-128.png │ │ │ ├── logo-3d.png │ │ │ ├── rec_lmk.png │ │ │ ├── rec_wifi.png │ │ │ ├── rec_atrace.png │ │ │ ├── rec_ftrace.png │ │ │ ├── rec_logcat.png │ │ │ ├── rec_vmstat.png │ │ │ ├── Roboto-100.woff2 │ │ │ ├── Roboto-300.woff2 │ │ │ ├── Roboto-400.woff2 │ │ │ ├── Roboto-500.woff2 │ │ │ ├── rec_cpu_fine.png │ │ │ ├── rec_cpu_freq.png │ │ │ ├── rec_meminfo.png │ │ │ ├── rec_one_shot.png │ │ │ ├── rec_profiling.png │ │ │ ├── rec_ps_stats.png │ │ │ ├── rec_ring_buf.png │ │ │ ├── rec_syscalls.png │ │ │ ├── rec_cpu_coarse.png │ │ │ ├── rec_cpu_voltage.png │ │ │ ├── rec_long_trace.png │ │ │ ├── rec_mem_hifreq.png │ │ │ ├── rec_board_voltage.png │ │ │ ├── rec_frame_timeline.png │ │ │ ├── rec_gpu_mem_total.png │ │ │ ├── rec_java_heap_dump.png │ │ │ ├── scheduling_latency.png │ │ │ ├── RobotoMono-Regular.woff2 │ │ │ ├── rec_battery_counters.png │ │ │ ├── RobotoCondensed-Light.woff2 │ │ │ ├── MaterialSymbolsOutlined.woff2 │ │ │ ├── RobotoCondensed-Regular.woff2 │ │ │ ├── rec_native_heap_profiler.png │ │ │ └── ._MaterialSymbolsOutlined.woff2 │ │ │ ├── trace_processor.wasm │ │ │ ├── trace_config_utils.wasm │ │ │ ├── trace_processor_memory64.wasm │ │ │ └── manifest.json │ ├── tsconfig.node.json │ ├── tsconfig.json │ ├── vite.config.ts │ └── package.json ├── validate │ ├── src │ │ ├── node.ts │ │ ├── tsc-cpuprofile.ts │ │ ├── utils.ts │ │ ├── type-registry.ts │ │ ├── grab-file.ts │ │ ├── package-name.test.ts │ │ ├── index.ts │ │ └── package-name.ts │ ├── tsdown.config.ts │ ├── tsconfig.json │ ├── package.json │ └── README.md └── analyze-trace │ ├── src │ ├── index.ts │ ├── constants.ts │ ├── browser.ts │ ├── node-module-paths.ts │ ├── get-duplicate-node-modules.ts │ ├── analyze-trace.ts │ └── spans.ts │ ├── tsconfig.json │ ├── tsdown.config.ts │ ├── bin │ └── typeslayer-analyze-trace.mjs │ └── package.json ├── pnpm-workspace.yaml ├── testbed ├── huge-union │ ├── tsconfig.json │ ├── package.json │ ├── package-lock.json │ └── index.ts └── as-simple-as-possible │ ├── tsconfig.json │ ├── package.json │ ├── pnpm-lock.yaml │ └── index.ts ├── .gitattributes ├── package.json ├── npm ├── linux-x64 │ ├── package.json │ └── README.md ├── win32-x64 │ ├── package.json │ └── README.md ├── darwin-arm64 │ ├── package.json │ └── README.md └── typeslayer │ ├── package.json │ ├── bin │ └── typeslayer.js │ └── README.md ├── biome.json ├── .vscode └── settings.json ├── scripts ├── tag.ts └── bump.ts └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /packages/typeslayer/src/components/types-list.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/typeslayer/.gitignore: -------------------------------------------------------------------------------- 1 | binaries 2 | target 3 | -------------------------------------------------------------------------------- /packages/validate/src/node.ts: -------------------------------------------------------------------------------- 1 | export { grabFile } from "./grab-file.js"; 2 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /packages/validate/src/tsc-cpuprofile.ts: -------------------------------------------------------------------------------- 1 | export const CPU_PROFILE_FILENAME = "tsc.cpuprofile"; 2 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - packages/* 3 | onlyBuiltDependencies: 4 | - esbuild 5 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/src/validate/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod trace_json; 2 | pub mod types_json; 3 | pub mod utils; 4 | -------------------------------------------------------------------------------- /packages/typeslayer/src/svg.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.png" { 2 | const src: string; 3 | export default src; 4 | } 5 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/src/analyze_trace/constants.rs: -------------------------------------------------------------------------------- 1 | pub const ANALYZE_TRACE_FILENAME: &str = "analyze-trace.json"; 2 | -------------------------------------------------------------------------------- /testbed/huge-union/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "strict": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Exclude static assets from GitHub Linguist language stats 2 | packages/typeslayer/public/** linguist-vendored 3 | -------------------------------------------------------------------------------- /packages/typeslayer/src/assets/ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src/assets/ts.png -------------------------------------------------------------------------------- /testbed/as-simple-as-possible/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "strict": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /packages/typeslayer/public/speedscope-ui/release.txt: -------------------------------------------------------------------------------- 1 | speedscope@1.25.0 2 | Sun Dec 7 16:07:24 EST 2025 3 | 3613918de0dd55a263d0d04f85b0c8c2039c7bee 4 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/64x64.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /packages/typeslayer/src/assets/typeslayer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src/assets/typeslayer.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /packages/typeslayer/src/assets/dimitropoulos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src/assets/dimitropoulos.png -------------------------------------------------------------------------------- /packages/typeslayer/src/assets/ts-nightmare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src/assets/ts-nightmare.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/src/assets/typeslayer-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src/assets/typeslayer-icon.png -------------------------------------------------------------------------------- /packages/analyze-trace/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./analyze-trace"; 2 | export * from "./constants"; 3 | export * from "./depth-limits"; 4 | export * from "./utils"; 5 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src/assets/typeslayer-nightmare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src/assets/typeslayer-nightmare.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-512@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@1x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@3x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@1x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@3x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@1x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@3x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-60x60@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-60x60@3x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-76x76@1x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-76x76@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-20x20@2x-1.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-29x29@2x-1.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-40x40@2x-1.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/typeslayer/public/speedscope-ui/jfrview_bg-BLJXNNQB.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/speedscope-ui/jfrview_bg-BLJXNNQB.wasm -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/traceconv.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/traceconv.wasm -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/brand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/brand.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/favicon.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/logo-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/logo-128.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/logo-3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/logo-3d.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_lmk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_lmk.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_wifi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_wifi.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #fff 4 | -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_atrace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_atrace.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_ftrace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_ftrace.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_logcat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_logcat.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_vmstat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_vmstat.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/trace_processor.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/trace_processor.wasm -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-100.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-300.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-400.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/Roboto-500.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_fine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_fine.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_freq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_freq.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_meminfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_meminfo.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_one_shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_one_shot.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_profiling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_profiling.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_ps_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_ps_stats.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_ring_buf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_ring_buf.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_syscalls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_syscalls.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/trace_config_utils.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/trace_config_utils.wasm -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /packages/analyze-trace/src/constants.ts: -------------------------------------------------------------------------------- 1 | // you may need to import this directly via ESM, otherwise Vite will complain about externalized fs dependencies 2 | export const ANALYZE_TRACE_FILENAME = "analyze-trace.json"; 3 | -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_coarse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_coarse.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_voltage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_cpu_voltage.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_long_trace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_long_trace.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_mem_hifreq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_mem_hifreq.png -------------------------------------------------------------------------------- /packages/typeslayer/public/speedscope-ui/SourceCodePro-Regular.ttf-ILST5JV6.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/speedscope-ui/SourceCodePro-Regular.ttf-ILST5JV6.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_board_voltage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_board_voltage.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_frame_timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_frame_timeline.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_gpu_mem_total.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_gpu_mem_total.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_java_heap_dump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_java_heap_dump.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/scheduling_latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/scheduling_latency.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/trace_processor_memory64.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/trace_processor_memory64.wasm -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/RobotoMono-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/RobotoMono-Regular.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_battery_counters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_battery_counters.png -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/RobotoCondensed-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/RobotoCondensed-Light.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/MaterialSymbolsOutlined.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/MaterialSymbolsOutlined.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/RobotoCondensed-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/RobotoCondensed-Regular.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_native_heap_profiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/rec_native_heap_profiler.png -------------------------------------------------------------------------------- /packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/._MaterialSymbolsOutlined.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimitropoulos/typeslayer/HEAD/packages/typeslayer/public/perfetto-ui/v53.0-867ef5020/assets/._MaterialSymbolsOutlined.woff2 -------------------------------------------------------------------------------- /packages/typeslayer/src/components/constants.tsx: -------------------------------------------------------------------------------- 1 | export const SERVER_PORT = 8666; 2 | export const CLIENT_PORT = 1993; 3 | export const TYPESCRIPT_TOML = "typescript.toml"; 4 | export const MITS_DISCORD = "https://discord.michigantypescript.com"; 5 | -------------------------------------------------------------------------------- /testbed/huge-union/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "huge-union", 3 | "main": "index.ts", 4 | "type": "module", 5 | "scripts": { 6 | "typecheck": "tsc --noEmit" 7 | }, 8 | "devDependencies": { 9 | "typescript": "^5.9.3" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/validate/tsdown.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsdown"; 2 | 3 | export default defineConfig({ 4 | entry: ["src/index.ts", "src/node.ts"], 5 | format: ["esm"], 6 | target: "es2024", 7 | dts: true, 8 | sourcemap: true, 9 | clean: true, 10 | }); 11 | -------------------------------------------------------------------------------- /testbed/as-simple-as-possible/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "as-simple-as-possible", 3 | "main": "index.ts", 4 | "type": "module", 5 | "scripts": { 6 | "typecheck": "tsc --noEmit" 7 | }, 8 | "devDependencies": { 9 | "typescript": "^5.9.3" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/typeslayer/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /packages/typeslayer/src/components/no-data.tsx: -------------------------------------------------------------------------------- 1 | import { Alert, Link } from "@mui/material"; 2 | 3 | export const NoData = () => { 4 | return ( 5 | 6 | it looks like you haven't run diagnostics yet. go to{" "} 7 | Start. 8 | 9 | ); 10 | }; 11 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/analyze-trace/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "target": "ES2024", 7 | "strict": true, 8 | "esModuleInterop": true, 9 | "resolveJsonModule": true, 10 | "skipLibCheck": true 11 | }, 12 | "include": ["**/*.ts"] 13 | } 14 | -------------------------------------------------------------------------------- /packages/typeslayer/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TypeSlayer 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/gen/schemas/capabilities.json: -------------------------------------------------------------------------------- 1 | {"default":{"identifier":"default","description":"Capability for the main window","local":true,"windows":["main"],"permissions":["core:default","opener:default","dialog:default","core:webview:allow-set-webview-zoom","clipboard-manager:default","upload:default","core:window:allow-is-fullscreen","core:window:allow-set-fullscreen","screenshots:default"]}} -------------------------------------------------------------------------------- /packages/typeslayer/src/components/center-loader.tsx: -------------------------------------------------------------------------------- 1 | import { Box, CircularProgress } from "@mui/material"; 2 | 3 | export const CenterLoader = () => ( 4 | 13 | 14 | 15 | ); 16 | -------------------------------------------------------------------------------- /packages/typeslayer/src/types/tauri-plugin-upload.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@tauri-apps/plugin-upload" { 2 | export interface DownloadProgress { 3 | progress: number; 4 | total: number; 5 | } 6 | export function download( 7 | url: string, 8 | destination: string, 9 | progressCb?: (p: DownloadProgress) => void, 10 | headers?: Record, 11 | ): Promise; 12 | } 13 | -------------------------------------------------------------------------------- /packages/validate/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2024", 4 | "module": "ES2022", 5 | "moduleResolution": "bundler", 6 | "declaration": true, 7 | "outDir": "dist", 8 | "strict": true, 9 | "esModuleInterop": false, 10 | "forceConsistentCasingInFileNames": true, 11 | "noEmitOnError": true, 12 | "resolveJsonModule": true, 13 | "skipLibCheck": true 14 | }, 15 | "include": ["**/*.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /packages/typeslayer/src/components/inline-code.tsx: -------------------------------------------------------------------------------- 1 | import { theme } from "../theme"; 2 | 3 | export const InlineCode = ({ 4 | children, 5 | primary = false, 6 | style, 7 | }: { 8 | children: React.ReactNode; 9 | primary?: boolean; 10 | style?: React.CSSProperties; 11 | }) => ( 12 | 18 | {children} 19 | 20 | ); 21 | -------------------------------------------------------------------------------- /packages/validate/src/utils.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod/v4"; 2 | 3 | export const CPU_PROFILE_FILENAME = "tsc.cpuprofile"; 4 | 5 | export const typeId = z.number().int().positive().or(z.literal(-1)); 6 | 7 | export type TypeId = z.infer; 8 | 9 | export const position = z.object({ 10 | line: typeId, 11 | character: z.number(), 12 | }); 13 | 14 | export const absolutePath = z.string(); 15 | 16 | export const location = z.object({ 17 | path: absolutePath, 18 | start: position, 19 | end: position, 20 | }); 21 | -------------------------------------------------------------------------------- /packages/analyze-trace/tsdown.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsdown"; 2 | 3 | export default defineConfig([ 4 | // Main Node.js build 5 | { 6 | entry: ["src/index.ts"], 7 | format: ["esm"], 8 | target: "es2024", 9 | dts: true, 10 | sourcemap: true, 11 | clean: true, 12 | }, 13 | // Browser-safe build (types only) 14 | { 15 | entry: { browser: "src/browser.ts" }, 16 | format: ["esm"], 17 | target: "es2024", 18 | dts: true, 19 | sourcemap: true, 20 | clean: false, 21 | }, 22 | ]); 23 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/src/log.rs: -------------------------------------------------------------------------------- 1 | use tracing_subscriber::{EnvFilter, fmt}; 2 | 3 | pub fn init() { 4 | let verbose = std::env::args().any(|arg| arg == "--verbose"); 5 | let default_level = if verbose { "info" } else { "warn" }; 6 | let env_filter = 7 | EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(default_level)); 8 | 9 | let _ = fmt() 10 | .with_env_filter(env_filter) 11 | .with_target(false) 12 | .with_level(true) 13 | .compact() 14 | .try_init(); 15 | } 16 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/capabilities/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../gen/schemas/desktop-schema.json", 3 | "identifier": "default", 4 | "description": "Capability for the main window", 5 | "windows": ["main"], 6 | "permissions": [ 7 | "core:default", 8 | "opener:default", 9 | "dialog:default", 10 | "core:webview:allow-set-webview-zoom", 11 | "clipboard-manager:default", 12 | "upload:default", 13 | "core:window:allow-is-fullscreen", 14 | "core:window:allow-set-fullscreen", 15 | "screenshots:default" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /testbed/as-simple-as-possible/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | typescript: 12 | specifier: ^5.8.3 13 | version: 5.8.3 14 | 15 | packages: 16 | 17 | typescript@5.8.3: 18 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 19 | engines: {node: '>=14.17'} 20 | hasBin: true 21 | 22 | snapshots: 23 | 24 | typescript@5.8.3: {} 25 | -------------------------------------------------------------------------------- /packages/analyze-trace/src/browser.ts: -------------------------------------------------------------------------------- 1 | // Browser-safe exports - only types and schemas, no Node.js APIs 2 | export type { 3 | TraceJsonSchema, 4 | TypesJsonSchema, 5 | } from "@typeslayer/validate"; 6 | export { ANALYZE_TRACE_FILENAME } from "./constants"; 7 | export type { DepthLimitsRecord } from "./depth-limits"; 8 | export type { 9 | AbsolutePath, 10 | AnalyzeTraceOptions, 11 | AnalyzeTraceResult, 12 | DuplicatedPackage, 13 | DuplicatedPackageInstance, 14 | EventSpan, 15 | HotSpot, 16 | Microseconds, 17 | NodeModulePaths, 18 | ParseResult, 19 | Project, 20 | ProjectResult, 21 | RootSpan, 22 | } from "./utils"; 23 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/src/validate/utils.rs: -------------------------------------------------------------------------------- 1 | use serde::{Deserialize, Serialize}; 2 | 3 | pub const CPU_PROFILE_FILENAME: &str = "tsc.cpuprofile"; 4 | 5 | /// TypeId corresponds to z.number().int().positive().or(z.literal(-1)) in TS. 6 | /// We keep it as i64 to be safe with larger ids. 7 | pub type TypeId = usize; 8 | 9 | #[derive(Debug, Clone, Serialize, Deserialize)] 10 | pub struct Position { 11 | pub line: TypeId, 12 | pub character: i64, 13 | } 14 | 15 | #[derive(Debug, Clone, Serialize, Deserialize)] 16 | pub struct Location { 17 | pub path: String, 18 | pub start: Position, 19 | pub end: Position, 20 | } 21 | -------------------------------------------------------------------------------- /packages/typeslayer/src/pages/award-winners/title-subtitle.tsx: -------------------------------------------------------------------------------- 1 | import { Stack, Typography } from "@mui/material"; 2 | import type { ReactNode } from "react"; 3 | 4 | export function TitleSubtitle({ 5 | title, 6 | subtitle, 7 | icon, 8 | }: { 9 | title: string; 10 | subtitle: ReactNode | string; 11 | icon: ReactNode; 12 | }) { 13 | return ( 14 | 15 | 16 | {icon} 17 | {title} 18 | 19 | {subtitle} 20 | 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@typeslayer/root", 3 | "private": true, 4 | "version": "0.0.0", 5 | "engines": { 6 | "node": ">=24.0.0", 7 | "pnpm": ">=10.0.0" 8 | }, 9 | "packageManager": "pnpm@10.6.5", 10 | "pnpm": { 11 | "onlyBuiltDependencies": [ 12 | "esbuild" 13 | ] 14 | }, 15 | "scripts": { 16 | "biome:check": "biome check --write --unsafe", 17 | "rip-and-tear": "echo \"did you?\"", 18 | "bump": "tsx scripts/bump.ts", 19 | "tag": "tsx scripts/tag.ts", 20 | "typecheck": "pnpm --recursive run typecheck" 21 | }, 22 | "devDependencies": { 23 | "@types/node": "^24.10.1", 24 | "@biomejs/biome": "^2.3.7" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/validate/src/type-registry.ts: -------------------------------------------------------------------------------- 1 | import type { ResolvedType } from "./types-json"; 2 | 3 | /** 4 | * Think of a TypeRegistry like an object that you'd use to look up types by their ID. 5 | * 6 | */ 7 | export type TypeRegistry = ResolvedType[]; 8 | 9 | const ALL_LIFE_IS_SUFFERING_THAT_BASKS_IN_NOTHINGNESS___ALL_LIFE_IS_TEMPORARY___WHAT_LASTS_IS_CONSCIOUSNESS: [ 10 | ResolvedType, 11 | ] = [{ id: 0, recursionId: -1, flags: [] }]; 12 | 13 | export const createTypeRegistry = (typesJson: ResolvedType[]): TypeRegistry => { 14 | return ALL_LIFE_IS_SUFFERING_THAT_BASKS_IN_NOTHINGNESS___ALL_LIFE_IS_TEMPORARY___WHAT_LASTS_IS_CONSCIOUSNESS.concat( 15 | typesJson, 16 | ); 17 | }; 18 | -------------------------------------------------------------------------------- /packages/typeslayer/src/pages/start/step.tsx: -------------------------------------------------------------------------------- 1 | import { Box, Typography, useTheme } from "@mui/material"; 2 | import type { PropsWithChildren } from "react"; 3 | 4 | export const Step = ({ 5 | step, 6 | children, 7 | }: PropsWithChildren<{ step: number }>) => { 8 | const theme = useTheme(); 9 | return ( 10 | 11 | 20 | {step} 21 | 22 | {children} 23 | 24 | ); 25 | }; 26 | -------------------------------------------------------------------------------- /packages/typeslayer/src/pages/cicd-integration.tsx: -------------------------------------------------------------------------------- 1 | import { Link, Stack, Typography } from "@mui/material"; 2 | 3 | export const CiCdIntegration = () => { 4 | return ( 5 | 6 | CI/CD Integration 7 | 8 | this is something that's planned, but I don't want to implement it until 9 | I get specific use-cases on what exactly people would want this for. 10 | 11 | 12 | that said, the fact that you clicked here means you're one of those 13 | people. lemme know.. 14 | 15 | 16 | ); 17 | }; 18 | -------------------------------------------------------------------------------- /npm/linux-x64/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@typeslayer/linux-x64", 3 | "version": "0.1.20", 4 | "description": "TypeSlayer binary for Linux x64", 5 | "private": false, 6 | "type": "module", 7 | "license": "MIT", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/dimitropoulos/typeslayer.git", 11 | "directory": "npm/linux-x64" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/dimitropoulos/typeslayer/issues" 15 | }, 16 | "homepage": "https://github.com/dimitropoulos/typeslayer#readme", 17 | "os": [ 18 | "linux" 19 | ], 20 | "cpu": [ 21 | "x64" 22 | ], 23 | "files": [ 24 | "typeslayer" 25 | ], 26 | "bin": { 27 | "typeslayer-linux-x64": "typeslayer" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/typeslayer/public/speedscope-ui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | speedscope 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /npm/win32-x64/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@typeslayer/win32-x64", 3 | "version": "0.1.20", 4 | "description": "TypeSlayer binary for Windows x64", 5 | "private": false, 6 | "type": "module", 7 | "license": "MIT", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/dimitropoulos/typeslayer.git", 11 | "directory": "npm/win32-x64" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/dimitropoulos/typeslayer/issues" 15 | }, 16 | "homepage": "https://github.com/dimitropoulos/typeslayer#readme", 17 | "os": [ 18 | "win32" 19 | ], 20 | "cpu": [ 21 | "x64" 22 | ], 23 | "files": [ 24 | "typeslayer.exe" 25 | ], 26 | "bin": { 27 | "typeslayer-win32-x64": "typeslayer" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/typeslayer/src/components/stat-pill.tsx: -------------------------------------------------------------------------------- 1 | import { Box, Typography } from "@mui/material"; 2 | 3 | export const StatPill = ({ 4 | label, 5 | value, 6 | }: { 7 | label: string; 8 | value: number; 9 | }) => ( 10 | `1px solid ${t.palette.primary.main}80`, 18 | }} 19 | > 20 | 21 | {value.toLocaleString()} 22 | 23 | 27 | {label} 28 | 29 | 30 | ); 31 | -------------------------------------------------------------------------------- /npm/darwin-arm64/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@typeslayer/darwin-arm64", 3 | "version": "0.1.20", 4 | "description": "TypeSlayer binary for macOS arm64", 5 | "private": false, 6 | "type": "module", 7 | "license": "MIT", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/dimitropoulos/typeslayer.git", 11 | "directory": "npm/darwin-arm64" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/dimitropoulos/typeslayer/issues" 15 | }, 16 | "homepage": "https://github.com/dimitropoulos/typeslayer#readme", 17 | "os": [ 18 | "darwin" 19 | ], 20 | "cpu": [ 21 | "arm64" 22 | ], 23 | "files": [ 24 | "typeslayer" 25 | ], 26 | "bin": { 27 | "typeslayer-darwin-arm64": "typeslayer" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/typeslayer/src/pages/award-winners/inline-bar-graph.tsx: -------------------------------------------------------------------------------- 1 | import { Box, Stack, Typography } from "@mui/material"; 2 | 3 | export const InlineBarGraph = ({ 4 | width, 5 | label, 6 | }: { 7 | width: string; 8 | label: string; 9 | }) => { 10 | return ( 11 | 12 | theme.palette.primary.main, 17 | borderRadius: "2px", 18 | marginTop: "2px", 19 | }} 20 | /> 21 | 22 | theme.palette.text.secondary, 25 | fontSize: "0.8rem", 26 | }} 27 | > 28 | {label} 29 | 30 | 31 | ); 32 | }; 33 | -------------------------------------------------------------------------------- /packages/typeslayer/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2022", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "noEmit": true, 15 | "jsx": "react-jsx", 16 | "types": ["vite/client", "node"], 17 | 18 | /* Linting */ 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": ["src"], 25 | "references": [{ "path": "./tsconfig.node.json" }] 26 | } 27 | -------------------------------------------------------------------------------- /packages/typeslayer/vite.config.ts: -------------------------------------------------------------------------------- 1 | import react from "@vitejs/plugin-react"; 2 | import { defineConfig } from "vite"; 3 | 4 | const host = process.env.TAURI_DEV_HOST; 5 | 6 | export default defineConfig(() => { 7 | return { 8 | plugins: [react()], 9 | root: "./src", 10 | publicDir: "../public", 11 | build: { 12 | outDir: "../dist", 13 | emptyOutDir: true, 14 | }, 15 | clearScreen: false, 16 | server: { 17 | port: 1993, 18 | strictPort: true, 19 | host: host || false, 20 | hmr: host 21 | ? { 22 | protocol: "ws", 23 | host, 24 | port: 1421, 25 | } 26 | : undefined, 27 | watch: { 28 | ignored: ["**/src-tauri/**"], 29 | }, 30 | }, 31 | }; 32 | }); 33 | -------------------------------------------------------------------------------- /testbed/huge-union/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "huge-union", 3 | "lockfileVersion": 3, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "name": "huge-union", 8 | "devDependencies": { 9 | "typescript": "^5.9.3" 10 | } 11 | }, 12 | "node_modules/typescript": { 13 | "version": "5.9.3", 14 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 15 | "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 16 | "dev": true, 17 | "license": "Apache-2.0", 18 | "bin": { 19 | "tsc": "bin/tsc", 20 | "tsserver": "bin/tsserver" 21 | }, 22 | "engines": { 23 | "node": ">=14.17" 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /packages/validate/src/grab-file.ts: -------------------------------------------------------------------------------- 1 | import { readFile } from "node:fs/promises"; 2 | import type { z } from "zod/v4"; 3 | 4 | export const grabFile = async ( 5 | filePath: string, 6 | validator: V, 7 | ) => { 8 | console.log("grabFile:", filePath); 9 | const json = await readSmallJson(filePath, "utf8"); 10 | const parsed = await validator.safeParseAsync(json); 11 | if (!parsed.success) { 12 | console.error("Error parsing file", { filePath, parsed }); 13 | throw new Error(`Error parsing file ${filePath}`); 14 | } 15 | return parsed.data; 16 | }; 17 | 18 | export const readSmallJson = async ( 19 | filePath: string, 20 | encoding: "utf8", 21 | ): Promise => { 22 | const fileString = await readFile(filePath, { encoding }); 23 | const parsed = JSON.parse(fileString); 24 | return parsed; 25 | }; 26 | -------------------------------------------------------------------------------- /packages/typeslayer/src/components/callout.tsx: -------------------------------------------------------------------------------- 1 | import { Info } from "@mui/icons-material"; 2 | import { Stack, type SxProps, Typography } from "@mui/material"; 3 | import { theme } from "../theme"; 4 | 5 | export function Callout({ 6 | children, 7 | title, 8 | sx = {}, 9 | }: { 10 | title: string; 11 | children: React.ReactNode; 12 | sx?: SxProps; 13 | }) { 14 | return ( 15 | 25 | 26 | 27 | {title} 28 | {children} 29 | 30 | 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /testbed/huge-union/index.ts: -------------------------------------------------------------------------------- 1 | const colors = [ 2 | "red", 3 | "green", 4 | "blue", 5 | "yellow", 6 | "purple", 7 | "orange", 8 | "pink", 9 | "brown", 10 | "gray", 11 | "black", 12 | "cyan", 13 | "magenta", 14 | "lime", 15 | "teal", 16 | "indigo", 17 | "violet", 18 | "gold", 19 | "silver", 20 | "bronze", 21 | "navy", 22 | ] as const; 23 | 24 | type Color = (typeof colors)[number]; 25 | 26 | export type Palette< 27 | Primary extends Color = Color, 28 | Secondary extends Color = Color, 29 | > = `${Primary}-${Secondary}`; 30 | 31 | export type FullPalette< 32 | Dark extends Palette = Palette, 33 | Light extends Palette = Palette, 34 | > = `${Dark}|${Light}`; 35 | 36 | export type Z = FullPalette<"red-blue", "yellow-green">; 37 | // ^? 38 | 39 | // @ts-expect-error 40 | export const fullPalette = (lightDarkPalette: FullPalette) => { 41 | // do stuff 42 | console.log(lightDarkPalette); 43 | }; 44 | -------------------------------------------------------------------------------- /packages/typeslayer/src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.tauri.app/config/2", 3 | "productName": "typeslayer", 4 | "version": "0.0.0", 5 | "identifier": "typeslayer", 6 | "build": { 7 | "beforeDevCommand": "pnpm dev", 8 | "devUrl": "http://localhost:1993", 9 | "beforeBuildCommand": "pnpm build", 10 | "frontendDist": "../dist" 11 | }, 12 | "app": { 13 | "windows": [ 14 | { 15 | "title": "TypeSlayer", 16 | "width": 1920, 17 | "height": 1080, 18 | "zoomHotkeysEnabled": true 19 | } 20 | ], 21 | "security": { 22 | "csp": null 23 | } 24 | }, 25 | "bundle": { 26 | "active": true, 27 | "targets": "all", 28 | "icon": [ 29 | "icons/32x32.png", 30 | "icons/64x64.png", 31 | "icons/128x128.png", 32 | "icons/128x128@2x.png", 33 | "icons/icon.png", 34 | "icons/icon.icns", 35 | "icons/icon.ico" 36 | ] 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /npm/linux-x64/README.md: -------------------------------------------------------------------------------- 1 | # Linux x64 Binary 2 | 3 | TypeSlayer binary for Linux x64 4 | 5 | This is an internal package distributed by the main [@typeslayer](https://www.npmjs.com/package/typeslayer) package. 6 | 7 | ## Installation 8 | 9 | You should not install this package directly. Instead, install the main package: 10 | 11 | ```bash 12 | npm install --save typeslayer 13 | ``` 14 | 15 | The appropriate binary for your platform will be automatically downloaded. 16 | 17 | ## Usage 18 | 19 | After installing the main `typeslayer` package, use it via: 20 | 21 | ```bash 22 | npx typeslayer --help 23 | ``` 24 | 25 | Or globally: 26 | 27 | ```bash 28 | npm install -g typeslayer 29 | typeslayer --help 30 | ``` 31 | 32 | ## About TypeSlayer 33 | 34 | TypeSlayer analyzes your TypeScript types to identify and optimize unused or redundant type definitions. 35 | 36 | For more information, visit the [main repository](https://github.com/dimitropoulos/typeslayer). 37 | 38 | ## License 39 | 40 | MIT 41 | -------------------------------------------------------------------------------- /testbed/as-simple-as-possible/index.ts: -------------------------------------------------------------------------------- 1 | // biome-ignore-all lint: this file is for demonstrating bad things 2 | 3 | export type Bit = "0" | "1"; 4 | export type BitArray = Bit[]; 5 | export type BitMatrix = BitArray[]; 6 | export type BitMatrix3D = BitMatrix[]; 7 | 8 | export type Byte = `${Bit}${Bit}${Bit}${Bit}${Bit}${Bit}${Bit}${Bit}`; 9 | export type ByteArray = Byte[]; 10 | export type ByteMatrix = ByteArray[]; 11 | export type ByteMatrix3D = ByteMatrix[]; 12 | 13 | export type Mapping = { 14 | [key in T extends "asdf" ? never : T]: `${T}${Byte}`; 15 | }; 16 | 17 | export type Thing1 = Mapping; 18 | export type Thing2 = Mapping<`${Byte}${Byte}`>; 19 | 20 | export type Boom = T extends any[] ? Boom : Boom; 21 | // @ts-expect-error naa naa nuh boo boo 22 | export type Explosion = Boom; 23 | export type UseExplosion = `exploded-${Explosion}`; 24 | 25 | export type Sometime = "later" | "sooner"; 26 | export type EvenLater = `even-${Sometime}`; 27 | -------------------------------------------------------------------------------- /npm/win32-x64/README.md: -------------------------------------------------------------------------------- 1 | # Windows x64 Binary 2 | 3 | TypeSlayer binary for Windows x64 4 | 5 | This is an internal package distributed by the main [@typeslayer](https://www.npmjs.com/package/typeslayer) package. 6 | 7 | ## Installation 8 | 9 | You should not install this package directly. Instead, install the main package: 10 | 11 | ```bash 12 | npm install --save typeslayer 13 | ``` 14 | 15 | The appropriate binary for your platform will be automatically downloaded. 16 | 17 | ## Usage 18 | 19 | After installing the main `typeslayer` package, use it via: 20 | 21 | ```bash 22 | npx typeslayer --help 23 | ``` 24 | 25 | Or globally: 26 | 27 | ```bash 28 | npm install -g typeslayer 29 | typeslayer --help 30 | ``` 31 | 32 | ## About TypeSlayer 33 | 34 | TypeSlayer analyzes your TypeScript types to identify and optimize unused or redundant type definitions. 35 | 36 | For more information, visit the [main repository](https://github.com/dimitropoulos/typeslayer). 37 | 38 | ## License 39 | 40 | MIT 41 | -------------------------------------------------------------------------------- /npm/darwin-arm64/README.md: -------------------------------------------------------------------------------- 1 | # macOS arm64 Binary 2 | 3 | TypeSlayer binary for macOS arm64 (Apple Silicon) 4 | 5 | This is an internal package distributed by the main [@typeslayer](https://www.npmjs.com/package/typeslayer) package. 6 | 7 | ## Installation 8 | 9 | You should not install this package directly. Instead, install the main package: 10 | 11 | ```bash 12 | npm install --save typeslayer 13 | ``` 14 | 15 | The appropriate binary for your platform will be automatically downloaded. 16 | 17 | ## Usage 18 | 19 | After installing the main `typeslayer` package, use it via: 20 | 21 | ```bash 22 | npx typeslayer --help 23 | ``` 24 | 25 | Or globally: 26 | 27 | ```bash 28 | npm install -g typeslayer 29 | typeslayer --help 30 | ``` 31 | 32 | ## About TypeSlayer 33 | 34 | TypeSlayer analyzes your TypeScript types to identify and optimize unused or redundant type definitions. 35 | 36 | For more information, visit the [main repository](https://github.com/dimitropoulos/typeslayer). 37 | 38 | ## License 39 | 40 | MIT 41 | -------------------------------------------------------------------------------- /packages/validate/src/package-name.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { extractPackageName, relativizePath } from "./package-name"; 3 | 4 | test("extractPackageName", () => { 5 | const pnpmLodash = 6 | "/home/tr/src/github.com/mui/material-ui/node_modules/.pnpm/@types+lodash@4.17.17/node_modules/@types/lodash/common/common.d.ts:200:6"; 7 | expect(extractPackageName(pnpmLodash)).toBe("@types/lodash@4.17.17"); 8 | 9 | const pnpmTypeScript = 10 | "/home/tr/src/github.com/mui/material-ui/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts:1322:17"; 11 | expect(extractPackageName(pnpmTypeScript)).toBe("typescript@5.8.3"); 12 | }); 13 | 14 | test("relativizePath", () => { 15 | const base = "/home/tr/src/github.com/mui/material-ui/packages/material-ui/"; 16 | const target = 17 | "/home/tr/src/github.com/mui/material-ui/packages/mui-system/src/useMediaQuery/useMediaQuery.ts"; 18 | const expected = "../mui-system/src/useMediaQuery/useMediaQuery.ts"; 19 | expect(relativizePath(base, target)).toBe(expected); 20 | }); 21 | -------------------------------------------------------------------------------- /packages/typeslayer/public/speedscope-ui/speedscope-GHPHNKXC.css: -------------------------------------------------------------------------------- 1 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}html{overflow:hidden;height:100%}body{height:100%;overflow:auto}@font-face{font-family:Source Code Pro;font-weight:400;font-style:normal;font-stretch:normal;src:url("./SourceCodePro-Regular.ttf-ILST5JV6.woff2") format("woff2")} 2 | /*# sourceMappingURL=speedscope-GHPHNKXC.css.map */ 3 | -------------------------------------------------------------------------------- /packages/typeslayer/src/pages/speedscope.tsx: -------------------------------------------------------------------------------- 1 | import Box from "@mui/material/Box"; 2 | import { CPU_PROFILE_FILENAME } from "@typeslayer/validate"; 3 | import { CenterLoader } from "../components/center-loader"; 4 | import { NoData } from "../components/no-data"; 5 | import { serverBaseUrl } from "../components/utils"; 6 | import { useOutputFileSizes } from "../hooks/tauri-hooks"; 7 | 8 | export const SpeedScope = () => { 9 | const { data: fileSizes, isLoading } = useOutputFileSizes(); 10 | if (isLoading) { 11 | ; 12 | } 13 | 14 | if (!fileSizes || !(CPU_PROFILE_FILENAME in fileSizes)) { 15 | return ( 16 | 17 | 18 | 19 | ); 20 | } 21 | 22 | const profileUrl = `${serverBaseUrl}/outputs/${CPU_PROFILE_FILENAME}`; 23 | const embeddedUrl = `/speedscope-ui/index.html#profileURL=${encodeURIComponent(profileUrl)}`; 24 | return ( 25 |