sverklo audit
D
Overall Health
C
Dead code
20% orphan symbols (234/1193)
F
Circular deps
44 cycles detected
F
Coupling
max fan-in: 68 (packages/vite/src/node/utils.ts)
D
Security
4 concerns found
Overview
- 1440 files indexed
- 2958 code symbols extracted
- 17345 symbol references tracked
- 0 active memories (0 core, 0 stale)
- Languages: javascript (881), typescript (559)
God Nodes (most-referenced symbols)
These are the symbols your codebase depends on most. Changes here have the largest blast radius.
- resolve — 371 references
- get — 178 references
- getColor — 164 references
- add — 109 references
- defineConfig — 106 references
- editFile — 105 references
- normalizePath — 91 references
- getBg — 82 references
- err — 75 references
- readFile — 65 references
Hub Files (highest PageRank)
Core architectural files — imported by many others.
packages/vite/src/node/utils.ts(1.00)packages/vite/src/shared/constants.ts(0.79)packages/vite/src/shared/utils.ts(0.68)packages/vite/src/node/constants.ts(0.44)playground/html/inline/common.js(0.35)playground/multiple-entrypoints/entrypoints/a24.js(0.31)playground/hmr/self-accept-within-circular/b.js(0.23)playground/hmr-ssr/self-accept-within-circular/b.js(0.23)packages/vite/src/node/packages.ts(0.23)playground/hmr/self-accept-within-circular/c.js(0.22)
Orphans (potential dead code)
Named functions with zero detected references. Could be dead code, public API exports, or referenced dynamically.
- servePublicMiddleware —
packages/vite/src/node/server/middlewares/static.ts:80 - serveStaticMiddleware —
packages/vite/src/node/server/middlewares/static.ts:124 - serveRawFsMiddleware —
packages/vite/src/node/server/middlewares/static.ts:201 - isFileServingAllowed —
packages/vite/src/node/server/middlewares/static.ts:249 - that —
playground/multiple-entrypoints/entrypoints/a16.js:10 - hostValidationMiddleware —
packages/vite/src/node/server/middlewares/hostCheck.ts:46 - that —
playground/multiple-entrypoints/entrypoints/a15.js:11 - shouldExternalize —
packages/vite/src/node/external.ts:22 - NestedTypeOnlyClass —
playground/tsconfig-json/nested/not-used-type.ts:3 - NestedWithExtendsTypeOnlyClass —
playground/tsconfig-json/nested-with-extends/not-used-type.ts:3
Coupling (high-PageRank files)
packages/vite/src/node/utils.ts(1.00)packages/vite/src/shared/constants.ts(0.79)packages/vite/src/shared/utils.ts(0.68)packages/vite/src/node/constants.ts(0.44)playground/html/inline/common.js(0.35)
Circular Dependencies (44 cycles)
- packages/vite/src/node/packages.ts -> packages/vite/src/node/utils.ts -> packages/vite/src/node/packages.ts
- playground/html/inline/common.js -> playground/html/inline/dep1.js -> playground/html/inline/common.js
- playground/html/inline/common.js -> playground/html/inline/dep2.js -> playground/html/inline/common.js
- playground/hmr/self-accept-within-circular/b.js -> playground/hmr/self-accept-within-circular/c.js -> playground/hmr/self-accept-within-circular/b.js
- playground/hmr-ssr/self-accept-within-circular/b.js -> playground/hmr-ssr/self-accept-within-circular/c.js -> playground/hmr-ssr/self-accept-within-circular/b.js
- playground/hmr/circular/mod-a.js -> playground/hmr/circular/mod-b.js -> playground/hmr/circular/mod-c.js -> playground/hmr/circular/mod-a.js
- playground/hmr-ssr/circular/mod-a.js -> playground/hmr-ssr/circular/mod-b.js -> playground/hmr-ssr/circular/mod-c.js -> playground/hmr-ssr/circular/mod-a.js
- playground/hmr/invalidation-circular-deps/circular-invalidate/child.js -> playground/hmr/invalidation-circular-deps/circular-invalidate/parent.js -> playground/hmr/invalidation-circular-deps/circular-invalidate/child.js
- playground/hmr/invalidation-circular-deps/invalidate-handled-in-circle/child.js -> playground/hmr/invalidation-circular-deps/invalidate-handled-in-circle/parent.js -> playground/hmr/invalidation-circular-deps/invalidate-handled-in-circle/child.js
- playground/hmr-ssr/invalidation-circular-deps/circular-invalidate/child.js -> playground/hmr-ssr/invalidation-circular-deps/circular-invalidate/parent.js -> playground/hmr-ssr/invalidation-circular-deps/circular-invalidate/child.js
- playground/hmr-ssr/invalidation-circular-deps/invalidate-handled-in-circle/child.js -> playground/hmr-ssr/invalidation-circular-deps/invalidate-handled-in-circle/parent.js -> playground/hmr-ssr/invalidation-circular-deps/invalidate-handled-in-circle/child.js
- playground/ssr/src/forked-deadlock/deadlock-fuse-module.js -> playground/ssr/src/forked-deadlock/fuse-stuck-bridge-module.js -> playground/ssr/src/forked-deadlock/stuck-module.js -> playground/ssr/src/forked-deadlock/middle-module.js -> playground/ssr/src/forked-deadlock/deadlock-fuse-module.js
- packages/vite/src/node/build.ts -> packages/vite/src/node/config.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/optimizedDeps.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts
- packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/plugins/importAnalysis.ts
- packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts
- packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/external.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/external.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/idResolver.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/idResolver.ts
- packages/vite/src/node/idResolver.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/idResolver.ts
- packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/nodeResolve.ts
- packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/plugins/html.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/plugins/html.ts -> packages/vite/src/node/plugins/asset.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/plugins/html.ts -> packages/vite/src/node/plugins/css.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/worker.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/preAlias.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/preAlias.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/wasm.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/workerImportMetaUrl.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/assetImportMetaUrl.ts -> packages/vite/src/node/plugins/importAnalysisBuild.ts -> packages/vite/src/node/build.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/assetImportMetaUrl.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/rolldownDepPlugin.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
- packages/vite/src/node/config.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts
- packages/vite/src/node/server/middlewares/transform.ts -> packages/vite/src/node/server/transformRequest.ts -> packages/vite/src/node/server/middlewares/transform.ts
- packages/vite/src/node/config.ts -> packages/vite/src/node/preview.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts
- packages/vite/src/node/config.ts -> packages/vite/src/node/preview.ts -> packages/vite/src/node/shortcuts.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts
- packages/vite/src/node/config.ts -> packages/vite/src/node/preview.ts -> packages/vite/src/node/config.ts
- packages/vite/src/node/config.ts -> packages/vite/src/node/ssr/runnerImport.ts -> packages/vite/src/node/config.ts
- playground/ssr/src/forked-deadlock/dynamic-imports/deadlock-fuse-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/fuse-stuck-bridge-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/stuck-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/middle-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/deadlock-fuse-module.js
Security Issues (4 found)
Critical (2)
- API token —
packages/vite/src/node/utils.ts:1626 process.env.npmconfiguser_agent?.split(' ')[0].split('/')[0] || 'npm'- API token —
packages/create-vite/src/index.ts:460 const pkgInfo = pkgFromUserAgent(process.env.npmconfiguser_agent)
High (2)
- new Function() usage —
packages/vite/src/node/utils.ts:1595 const fn = new Function(`- new Function() usage —
packages/vite/src/node/ssr/ssrStacktrace.ts:13 new Function('throw new Error(1)')()
Suggested Next Steps
- Before refactoring resolve, run
sverklo_impactto see the 371 call sites packages/vite/src/node/utils.tsis your most-imported file — changes here cascade widely- 15+ potential orphans detected — audit for dead code