Vite plugin that reimplements the Next.js API surface — deploy anywhere
This report summarizes scanner evidence for cloudflare/vinext, a TypeScript project with 9,127 GitHub stars. SynthScan examined 615,351 lines of code across 2327 source files, recording 3152 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 7.3 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 2501 finding(s).
Are imports declared and package/API names verified? 6 finding(s).
Are wrappers, guards, and repeated structures necessary? 2780 finding(s).
Which changes need focused human review? 3152 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3152 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | oxlint-plugins/prefer-shared-utils.ts | 55 | function readExportedFunctionNames(absPath: string): string[] { | CODE |
| LOW | oxlint-plugins/prefer-shared-utils.ts | 115 | function maskCommentsAndQuotedStrings(source: string, options = { scanTemplateBodies: true }) { | CODE |
| LOW | oxlint-plugins/prefer-shared-utils.ts | 181 | function isCanonicalDefinitionFile(filename: string, modulePath: string) { | CODE |
| LOW | tests/cache-adapter-instantiate.test.ts | 47 | async function expectNoUnhandledRejection(run: () => void) { | CODE |
| LOW | tests/asset-prefix.test.ts | 457 | function directoryContainsFileWithExtension(dir: string, extension: string): boolean { | CODE |
| LOW | tests/pages-router.test.ts | 63 | function writeMiddlewareRewritePriorityFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 173 | function writePagesAppGlobalCssFixture(rootDir: string): PagesAppGlobalCssFixture { | CODE |
| LOW | tests/pages-router.test.ts | 323 | function writeEncodedSlashPagesFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 358 | function writeOptionalCatchAllRootFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 389 | function writeGsspAppInitialPropsContextFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 537 | async function buildPagesFixtureToOutDir(rootDir: string, outDir: string): Promise<void> { | CODE |
| LOW | tests/pages-router-app-prefetch-detection.test.ts | 63 | function installFakeBrowserGlobals( | CODE |
| LOW | tests/optimize-imports-integration.test.ts | 17 | function linkWorkspaceDependencies( | CODE |
| LOW | tests/app-page-dispatch.test.ts | 215 | function findMetadataOutletElements(payload: unknown): React.ReactElement[] { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 250 | function renderPagePayloadToStream(payload: unknown): ReadableStream<Uint8Array> { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 304 | function createPostsCacheabilityManifest() { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 322 | function expectCachedAppPageSearchParamsObservation(value: unknown, html: string): void { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 334 | function buildQueryInvariantRenderObservation(): RenderObservation { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 552 | function createParamTextPageElement(prefix = "element") { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 563 | function createPprBlogDispatchOptions(overrides: CreateDispatchOptionsOverrides = {}) { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 576 | function createPprBlogFallbackShellGetter(stale: boolean) { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 588 | function createFreshBodySsrHandler(body: string): DispatchOptions["loadSsrHandler"] { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 596 | function createVerifiedStaticLayoutManifest(input: { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 5070 | function createDynamicSegmentRoute(): TestRoute { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 5451 | function createProductionSsrHandler( | CODE |
| LOW | tests/app-page-dispatch.test.ts | 5914 | function createDeferredCacheLifeRender() { | CODE |
| LOW | tests/helpers.ts | 251 | export async function requestNodeServerWithHost( | CODE |
| LOW | tests/helpers.ts | 313 | export async function expectRepeatedSlashRedirects( | CODE |
| LOW | tests/helpers.ts | 454 | export async function buildCloudflareAppFixture(fixtureDir: string): Promise<{ | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 216 | function countSuspenseWithFallback(node: unknown, fallbackTypeName: string): number { | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 434 | async function buildGeneratedMetadataRouteElements( | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 480 | async function buildGeneratedMetadataRouteHtml( | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 4630 | function buildStaticBranchElements(branch: "account" | "admin") { | CODE |
| LOW | tests/pages-router-worker-entry.test.ts | 5 | function pagesWorkerEntryVirtualModules(): Plugin { | CODE |
| LOW | tests/pages-router-worker-entry.test.ts | 62 | export function registerConfiguredCacheAdapters() { | CODE |
| LOW | tests/pages-router-worker-entry.test.ts | 78 | ["virtual:vinext-image-adapters", "export function registerConfiguredImageOptimizer() {}"], | CODE |
| LOW | tests/cloudflare-cdn-worker.test.ts | 94 | function getPreFixResponseStageInvocation(value: unknown): PreFixResponseStageInvocation | null { | CODE |
| LOW | tests/worker-entry-source.ts | 12 | export function readAppRequestStageEntrySource(): string { | CODE |
| LOW⚡ | tests/worker-entry-source.ts | 27 | export function readPagesRouterEntrySource(): string { | CODE |
| LOW⚡ | tests/worker-entry-source.ts | 31 | export function readPagesSingleEntrySource(): string { | CODE |
| LOW⚡ | tests/worker-entry-source.ts | 40 | export function readPagesRequestStageEntrySource(): string { | CODE |
| LOW | tests/worker-entry-source.ts | 52 | export function readPagesResponseStageEntrySource(): string { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 97 | function createNoopRscEmbedTransform() { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 540 | function createFastSuspenseDocument() { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 564 | async function renderFastSuspenseDocument(waitBeforePipe: boolean): Promise<string> { | CODE |
| LOW | tests/app-router-isr-codegen.test.ts | 255 | expect(code).toContain("export async function seedMemoryCacheFromPrerender(serverDir)"); | CODE |
| LOW | tests/cache-adapters-config.test.ts | 73 | expect(code).toContain("export function registerConfiguredCacheAdapters() {}"); | CODE |
| LOW | tests/cloudflare-cdn-warm-deploy.test.ts | 117 | function writeTwoStageWorkerArtifact({ | CODE |
| LOW | tests/cloudflare-cdn-warm-deploy.test.ts | 155 | function writeBuildOutputWorkerArtifact(): void { | CODE |
| LOW | tests/app-page-cache.test.ts | 56 | function createHeaderClearingCdnAdapter(): CdnCacheAdapter { | CODE |
| LOW | tests/init-cjs-config-resolve.test.ts | 7 | async function buildAppWithExtensionlessTailwindConfig( | CODE |
| LOW | tests/tsconfig-path-alias-build.test.ts | 49 | function writeCloudflareAppFixture(root: string, name: string) { | CODE |
| LOW | tests/tsconfig-path-alias-build.test.ts | 141 | async function buildCloudflareAppFixture(root: string) { | CODE |
| LOW | tests/pages-node-compat.test.ts | 19 | function exerciseNextApiRequestPreviewTypes(req: NextApiRequest): NextApiRequestPreviewFields { | CODE |
| LOW | tests/pages-node-compat.test.ts | 41 | function exerciseNextApiResponsePreviewTypes(res: NextApiResponse): Promise<void> { | CODE |
| LOW | tests/deploy-prerender-config.test.ts | 151 | function writeProjectWithInlineNextConfig(nextConfig: string): void { | CODE |
| LOW | tests/deploy-prerender-config.test.ts | 178 | function writeCfBuildOutputScaffolding(): void { | CODE |
| LOW | tests/init.test.ts | 179 | function readPluginRscVendoredEdgeBundle(fileName: string): string { | CODE |
| LOW | tests/init.test.ts | 190 | function expectConsumedBeforeInitialization( | CODE |
| LOW | tests/app-pages-bridge.test.ts | 44 | async function renderHybridEdgeApiResponse(hostRuntime: "node" | "worker") { | CODE |
| 2075 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/asset-prefix.test.ts | 46 | // ── Unit tests on the asset-prefix helpers ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/asset-prefix.test.ts | 399 | // ── End-to-end build tests ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 3152 | // ── Cross-origin request protection ───────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 3215 | // ── /_next/data JSON endpoint (issue #1330) ────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 3215 | // ── /_next/data JSON endpoint (issue #1330) ────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 8172 | // ── /_next/data JSON endpoint in production (issue #1330) ───────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 8172 | // ── /_next/data JSON endpoint in production (issue #1330) ───────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 16 | // ── Helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 82 | // ── Font shim tests ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 590 | // ── Plugin tests ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1366 | // ── fetchAndCacheFont integration ───────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1601 | // ── Served URL rewrite for cached Google Fonts CSS ──────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1670 | // ── parseStaticObjectLiteral security tests ─────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1773 | // ── _findBalancedObject / _findCallEnd unit tests ───────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 10 | // ── isAllowedDevOrigin ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 106 | // ── isCrossSiteNoCorsRequest ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 133 | // ── validateDevRequest ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 176 | // ── generateDevOriginCheckCode ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 16 | // ── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 34 | // ── scanImports ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 356 | // ── analyzeConfig ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 995 | // ── checkLibraries ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1114 | // ── checkConventions ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1956 | // ── hasFreeCjsGlobal ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 2062 | // ── runCheck ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 2174 | // ── formatReport ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 2340 | // ── Integration: running against fixtures ────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 49 | // ── parseSizeLimit ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 80 | // ── resolveBodyParserConfig ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 137 | // ── Helpers shared by the integration tests below ──────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 284 | // ── Node/dev path: api-handler.ts ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 420 | // ── Workers/prod path: pages-api-route.ts ──────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 10 | // ─── MISS ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 35 | // ─── HIT ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 171 | // ─── STALE ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 265 | // ─── buildMissIsrCacheControl ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 285 | // ─── buildAppRouteMissIsrCacheControl ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 309 | // ─── re-exported constants ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 22 | // ── Fixture paths ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 71 | // ── Server lifecycle helper ─────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 161 | // ── Config helpers ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 180 | // ── Fetch helpers ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/app-ssr-stream.test.ts | 444 | // ── beforeInteractive pre-head splice ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 29 | // ─── Issue #1513 reproduction ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 29 | // ─── Issue #1513 reproduction ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 66 | // ─── SSR rendering ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 293 | // ─── srcSet generation ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 373 | // ─── getImageProps ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 531 | // ─── Security: blurDataURL CSS injection ──────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 638 | // ─── onLoadingComplete (deprecated but supported) ──────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 862 | // ─── Reproduction: priority prop on remote URL paths ──────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 956 | // ─── onLoad / onError single-fire dedup ────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 1085 | // ─── dangerouslyAllowLocalIP / private-IP guard ───────────────────────── | COMMENT |
| MEDIUM | tests/app-router-next-config-codegen.test.ts | 391 | // ── Dev origin check code generation ──────────────────────────────── | COMMENT |
| MEDIUM | tests/app-router-client-preloading.test.ts | 61 | // ── Auto-registration of @vitejs/plugin-rsc ───────────────────────────────── | COMMENT |
| MEDIUM | tests/link.test.ts | 209 | // ─── Repeated-slash warning (parity with Next.js) ─────────────────────── | COMMENT |
| MEDIUM | tests/link.test.ts | 365 | // ─── useLinkStatus ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/link.test.ts | 645 | // ─── resolveHref (internal helper, tested via component output) ───────── | COMMENT |
| MEDIUM | tests/link.test.ts | 905 | // ─── isExternalUrl ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/link.test.ts | 931 | // ─── isHashOnlyChange ─────────────────────────────────────────────────── | COMMENT |
| 585 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vite.config.ts | 261 | alias: WORKSPACE_SRC_ALIAS, | COMMENT |
| LOW | tests/font-google.test.ts | 1601 | // ── Served URL rewrite for cached Google Fonts CSS ──────────── | COMMENT |
| LOW | tests/helpers.ts | 221 | const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), prefix)); | COMMENT |
| LOW | tests/app-layout-param-observation.test.ts | 241 | ensureFetchPatch(); | COMMENT |
| LOW | tests/init-cjs-config-resolve.test.ts | 61 | } | COMMENT |
| LOW | tests/tsconfig-path-alias-build.test.ts | 321 | // unminified JS escaped the inner quotes as `title: \"Second Post\"`, so the | COMMENT |
| LOW | tests/script.test.ts | 201 | ); | COMMENT |
| LOW | tests/script.test.ts | 661 | // The stylesheets prop must never leak onto the <script> attribute list. | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 1 | import fs from "node:fs"; | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 21 | // request and fell back to the real font only via the browser's | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 41 | fs.rmSync(fontCacheDir, { recursive: true, force: true }); | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 61 | // mock can match by substring. The build plugin currently always | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 841 | /<link\b(?=[^>]*\brel="modulepreload")(?=[^>]*\bas="script")(?=[^>]*\bfetchpriority="low")(?=[^>]*\bhref="[^"]*\ | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 1061 | // Positive sanity: the page actually rendered (otherwise the negative | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 2681 | // server-references manifest on the action POST. (b) can only fail in | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 2821 | // override view but did not invalidate the cached sealed snapshot, so the | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 2921 | COMMENT | |
| LOW | tests/head.test.ts | 741 | // ─── client hydration sync keeps defaults & order (issue #1569 / #1677) ───── | COMMENT |
| LOW | tests/app-router-rsc-flight-hint.test.ts | 41 | // ── Client reference preloading (Issue #256) ───────────────────────────────── | COMMENT |
| LOW | tests/rsc-streaming.test.ts | 641 | expect(output).toContain(RSC_RUNTIME_PUSH); | COMMENT |
| LOW | tests/router-javascript-urls.test.ts | 1 | import { afterEach, describe, it, expect, vi } from "vite-plus/test"; | COMMENT |
| LOW | tests/router-javascript-urls.test.ts | 21 | // | COMMENT |
| LOW | tests/link-navigation.test.ts | 801 | expect(onClick).toHaveBeenCalledTimes(1); | COMMENT |
| LOW | tests/link-navigation.test.ts | 1061 | expect(onNavigate).not.toHaveBeenCalled(); | COMMENT |
| LOW | tests/entry-templates.test.ts | 1121 | ]); | COMMENT |
| LOW | tests/entry-templates.test.ts | 2001 | // loader so route-miss 404s can render app/global-not-found.tsx standalone. | COMMENT |
| LOW | tests/prerender.test.ts | 1721 | }); | COMMENT |
| LOW | tests/serve-static.test.ts | 1261 | server.close((error) => (error ? reject(error) : resolve())); | COMMENT |
| LOW | tests/cache-adapters-build.test.ts | 241 | // adapter's `LOCAL_ADAPTER_MARKER` string literal, whose contents survive | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 81 | expect(res.status).toBe(404); | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 121 | // | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 141 | // Tests client-side external navigation | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 161 | // N/A: Popstate revalidate | COMMENT |
| LOW | tests/nextjs-compat/not-found.test.ts | 381 | // Mirrors Next.js: when `isHTTPAccessFallbackError(err)` is true, the | COMMENT |
| LOW | tests/nextjs-compat/not-found.test.ts | 441 | expect(body).not.toContain("Server action failed"); | COMMENT |
| LOW | tests/nextjs-compat/not-found.test.ts | 461 | // TO PORT: Add to same Playwright spec. | COMMENT |
| LOW | tests/nextjs-compat/rsc-context-lazy-stream.test.ts | 121 | expect(html).toContain(`data-request-id="${SENTINEL}"`); | COMMENT |
| LOW | tests/nextjs-compat/rsc-context-lazy-stream.test.ts | 181 | COMMENT | |
| LOW | tests/nextjs-compat/app-routes.test.ts | 421 | // Tests ISR revalidation on route handlers with static params — build-specific | COMMENT |
| LOW | tests/nextjs-compat/app-routes.test.ts | 441 | // N/A: 'customized metadata routes' (robots.txt) — Metadata routes not in scope | COMMENT |
| LOW | tests/nextjs-compat/app-css.test.ts | 81 | // N/A: Computed styles (color, font-size, font-weight) | COMMENT |
| LOW | tests/nextjs-compat/revalidate-reason.test.ts | 41 | }); | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 201 | expect(res.status).toBe(200); | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 261 | // TO PORT: Create tests/e2e/app-router/nextjs-compat/global-error.spec.ts with | COMMENT |
| LOW | tests/nextjs-compat/global-not-found.test.ts | 101 | // global-not-found.tsx replaces the root layout for route-miss 404s, so the | COMMENT |
| LOW | tests/nextjs-compat/global-not-found.test.ts | 121 | COMMENT | |
| LOW | tests/nextjs-compat/hooks.test.ts | 161 | // Tests the shared-component use case: a client component that imports from | COMMENT |
| LOW | tests/nextjs-compat/hooks.test.ts | 181 | // Tests that useParams returns the same object reference on re-render | COMMENT |
| LOW | tests/nextjs-compat/dynamic.test.ts | 121 | // | COMMENT |
| LOW | tests/nextjs-compat/dynamic.test.ts | 221 | for (const tag of preloadLinks) { | COMMENT |
| LOW | tests/nextjs-compat/dynamic.test.ts | 241 | // Source: dynamic.test.ts#L38-L41 | COMMENT |
| LOW | tests/nextjs-compat/dynamic.test.ts | 261 | // SKIP: 'should not render client component imported through ssr: false in client components in edge runtime' | COMMENT |
| LOW | tests/nextjs-compat/metadata.test.ts | 401 | // Some template tests use browser.eval('document.title') — ported above at SSR level | COMMENT |
| LOW | tests/nextjs-compat/metadata.test.ts | 421 | // N/A: HMR/hot reload tests | COMMENT |
| LOW | tests/nextjs-compat/app-rendering.test.ts | 101 | expect(html).toMatch(/id="layout-now"[^>]*>\d+/); | COMMENT |
| LOW | tests/e2e/catch-error/catch-error.spec.ts | 81 | // Next-parity test: an uncaught post-shell RSC error with no route/userland | COMMENT |
| LOW | tests/e2e/app-router/config-redirect.spec.ts | 121 | COMMENT | |
| LOW | tests/e2e/app-router/pages-router-use-params.spec.ts | 1 | // Regression test for issue #1466 ported from the Next.js deploy suite: | COMMENT |
| LOW | tests/e2e/app-router/cjs.spec.ts | 21 | // causes a fatal error during production builds of app-basic, breaking | COMMENT |
| LOW | tests/e2e/app-router/rsc-fetch-errors.spec.ts | 141 | // waits in CI. | COMMENT |
| 210 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .opencode/commands/fix-issue.md | 7 | ## Step 1: Understand the issue | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 11 | ## Step 2: Create worktree and branch | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 28 | ## Step 3: Fix the issue | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 41 | ## Step 4: Verify | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 54 | ## Step 5: Commit and create PR | COMMENT |
| LOW⚡ | .opencode/commands/address-review.md | 7 | ## Step 1: Read all review feedback | COMMENT |
| LOW⚡ | .opencode/commands/address-review.md | 15 | ## Step 2: Categorize each comment | COMMENT |
| LOW⚡ | .opencode/commands/address-review.md | 23 | ## Step 3: Make fixes | COMMENT |
| LOW | .opencode/commands/address-review.md | 38 | ## Step 4: File follow-up issues | COMMENT |
| LOW | .opencode/commands/address-review.md | 56 | ## Step 5: Reply to review comments | COMMENT |
| LOW | .opencode/commands/address-review.md | 67 | ## Step 6: Enable auto-merge | COMMENT |
| LOW | .opencode/commands/address-review.md | 73 | ## Step 7: Summary | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 2135 | // Step 1: Detect project structure | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 2155 | // Step 2: Validate init-owned dependencies and deployment scaffolding. | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 2254 | // Step 5: Build | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 2397 | // Step 7: Deploy the entry Worker via the selected CLI. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 327 | // Step 1: extract regex groups and replace with numbered placeholders. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 334 | // Step 2: single-pass conversion of the placeholder-bearing string. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 191 | // Step 2: Redirect repeated slashes / backslashes (308, like Next.js) and | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 198 | // Step 3: Strict segment-wise percent-decode. Preserves encoded path delimiters | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 208 | // Step 4: Collapse double-slashes and resolve . / .. segments. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 213 | // Step 5: basePath check and strip. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 240 | // Step 8: Validate and sanitize X-Vinext-Interception-Context. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 259 | // Step 9: Normalize mounted-slots header for canonical cache keying. | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 402 | // Step 1: Reconstruct basePathState | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 405 | // Step 2: Trailing-slash normalization. Adapters must rewrite `_next/data` | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 417 | // Step 3: Build pre-middleware request context | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 426 | // Step 4: Config redirects (before middleware) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 805 | // Step 11: API routes | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 809 | // Step 12: afterFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 463 | // Step 5: Middleware | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 618 | // Step 6: Unpack middleware request headers | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 674 | // Step 7: Config headers staging | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 685 | // Step 8: External-URL proxy (post-mw rewrite target) | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 701 | // Step 9: beforeFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 863 | // Step 13: Render + fallback rewrites | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/cloudflare/src/deploy.ts | 2135 | // Step 1: Detect project structure | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 2155 | // Step 2: Validate init-owned dependencies and deployment scaffolding. | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 2254 | // Step 5: Build | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 2397 | // Step 7: Deploy the entry Worker via the selected CLI. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 327 | // Step 1: extract regex groups and replace with numbered placeholders. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 334 | // Step 2: single-pass conversion of the placeholder-bearing string. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 191 | // Step 2: Redirect repeated slashes / backslashes (308, like Next.js) and | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 198 | // Step 3: Strict segment-wise percent-decode. Preserves encoded path delimiters | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 208 | // Step 4: Collapse double-slashes and resolve . / .. segments. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 213 | // Step 5: basePath check and strip. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 240 | // Step 8: Validate and sanitize X-Vinext-Interception-Context. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 259 | // Step 9: Normalize mounted-slots header for canonical cache keying. | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 402 | // Step 1: Reconstruct basePathState | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 405 | // Step 2: Trailing-slash normalization. Adapters must rewrite `_next/data` | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 417 | // Step 3: Build pre-middleware request context | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 426 | // Step 4: Config redirects (before middleware) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 805 | // Step 11: API routes | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 809 | // Step 12: afterFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 463 | // Step 5: Middleware | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 618 | // Step 6: Unpack middleware request headers | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 674 | // Step 7: Config headers staging | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 685 | // Step 8: External-URL proxy (post-mw rewrite target) | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 701 | // Step 9: beforeFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 863 | // Step 13: Render + fallback rewrites | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/pages-router.test.ts | 2202 | ...devServer.environments.client.moduleGraph.idToModuleMap.values(), | CODE |
| CRITICAL | tests/app-router-dev-server.test.ts | 163 | const rscModuleIds = server.environments.rsc.moduleGraph.idToModuleMap.keys(); | CODE |
| CRITICAL | tests/app-router-dev-externals.test.ts | 53 | const ids = [...server.environments.rsc.moduleGraph.idToModuleMap.keys()]; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/build-time-classification-integration.test.ts | 238 | // below are minify-robust by design — see the file header. | COMMENT |
| MEDIUM | scripts/e2e-logs.sh | 2 | # Logs script for the Next.js deploy test harness. | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 2 | # Deploy script for the Next.js deploy test harness. | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 272 | # during the test harness's destroy() cleanup. vinext doesn't produce one, so | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 275 | # on failure — otherwise the test harness logs ENOENT noise (303 lines per | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 720 | # Dependency-manager deprecation summaries describe the deploy harness's own | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 775 | # The Next.js test harness parses these markers from the logs script output | COMMENT |
| MEDIUM | scripts/e2e-cleanup.sh | 2 | # Cleanup script for the Next.js deploy test harness. | COMMENT |
| MEDIUM | packages/vinext/src/shims/internal/interpolate-as.ts | 238 | // TODO: more robust handling for user-error (passing `/`) | COMMENT |
| MEDIUM | .github/workflows/nextjs-deploy-suite.yml | 61 | # Backfills retain the current workflow harness in the workspace and | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/use-cache-transform.test.ts | 34 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 41 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 169 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 210 | const source = `export async function getData() { return 1; }`; | CODE |
| LOW | tests/use-cache-transform.test.ts | 226 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 333 | const source = `export async function getData() { return 1; }`; | CODE |
| LOW | tests/use-cache-transform.test.ts | 502 | [`export async function getData() {`, ` "use cache: durable-cache";`, `}`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 548 | [`export function getData() {`, ` "use cache";`, `}`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 568 | [`"use cache";`, `export function getData() { return 1; }`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 672 | [`export async function getData() {`, ` ${JSON.stringify(directive)};`, `}`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 689 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 772 | [`"use server";`, `"use cache";`, `export async function getData() {}`].join("\n"), | CODE |
| LOW | tests/nextjs-compat/app-rendering.test.ts | 108 | // timestamps across requests. The async function getData() returns a cached promise at | COMMENT |
| LOW | …amples/app-router-playground/app/remote-cache/page.tsx | 48 | async function getData() { | CODE |
| LOW | …es/app-router-playground/app/cached-functions/page.tsx | 39 | async function getData() { | CODE |
| LOW | packages/vinext/src/server/app-router-entry.ts | 127 | async function handleRequest( | CODE |
| LOW | …next/src/server/app-request-stage-independent-entry.ts | 82 | async function handleRequest( | CODE |
| LOW | packages/vinext/src/server/pages-request-stage-entry.ts | 214 | function handleRequest( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …vinext/src/server/app-browser-navigation-controller.ts | 1091 | // Intentionally retained as #726-OPS-01 trace-shell scaffolding. The | COMMENT |
| MEDIUM | .github/workflows/nextjs-deploy-suite.yml | 264 | # e2e-deploy.sh dependency injection), the scripts, the prepared | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 194 | # scaffold install. Replace them with explicit false values. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/run-nextjs-deploy-suite.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/autopilot.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/profile-vinext-dev-macos.sh | 8 | # Usage: | COMMENT |
| LOW | scripts/smoke-test.sh | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/metadata-routes.test.ts | 239 | uploader: { info: "https://example.com/authors/jane", content: "Jane Doe" }, | CODE |
| LOW | …ic/fixture/app/api/endpoint-behind-middleware/route.ts | 2 | return Response.json({ name: 'John Doe' }); | CODE |
| LOW | …ntry-nextjs-16-static/fixture/tests/middleware.test.ts | 15 | expect(await response.json()).toStrictEqual({ name: 'John Doe' }); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test-repos.sh | 195 | # Print results | COMMENT |