Vite plugin that reimplements the Next.js API surface — deploy anywhere
This report presents the forensic synthetic code analysis of cloudflare/vinext, a TypeScript project with 8,690 GitHub stars. SynthScan v2.0 examined 479,832 lines of code across 1845 source files, recording 2769 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 8.6 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2769 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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 | 395 | // ── End-to-end build tests ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 2874 | // ── Cross-origin request protection ───────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 2937 | // ── /_next/data JSON endpoint (issue #1330) ────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 2937 | // ── /_next/data JSON endpoint (issue #1330) ────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 7832 | // ── /_next/data JSON endpoint in production (issue #1330) ───────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 7832 | // ── /_next/data JSON endpoint in production (issue #1330) ───────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 15 | // ── Helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 78 | // ── Font shim tests ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 586 | // ── Plugin tests ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1362 | // ── fetchAndCacheFont integration ───────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1420 | // ── Served URL rewrite for cached Google Fonts CSS ──────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1574 | // ── parseStaticObjectLiteral security tests ─────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1677 | // ── _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 | 281 | // ── analyzeConfig ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 827 | // ── checkLibraries ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 934 | // ── checkConventions ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1363 | // ── hasFreeCjsGlobal ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1469 | // ── runCheck ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1581 | // ── formatReport ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1717 | // ── 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 | 19 | // ── Fixture paths ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 38 | // ── Server lifecycle helper ─────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 122 | // ── Config helpers ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 141 | // ── Fetch helpers ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/app-ssr-stream.test.ts | 352 | // ── 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 | 371 | // ── 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 | 152 | // ─── Repeated-slash warning (parity with Next.js) ─────────────────────── | COMMENT |
| MEDIUM | tests/link.test.ts | 253 | // ─── useLinkStatus ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/link.test.ts | 535 | // ─── resolveHref (internal helper, tested via component output) ───────── | COMMENT |
| MEDIUM | tests/link.test.ts | 765 | // ─── isExternalUrl ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/link.test.ts | 791 | // ─── isHashOnlyChange ─────────────────────────────────────────────────── | COMMENT |
| 597 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | oxlint-plugins/prefer-shared-utils.js | 53 | function readExportedFunctionNames(absPath) { | CODE |
| LOW | oxlint-plugins/prefer-shared-utils.js | 113 | function maskCommentsAndQuotedStrings(source, options = { scanTemplateBodies: true }) { | CODE |
| LOW | oxlint-plugins/prefer-shared-utils.js | 179 | function isCanonicalDefinitionFile(filename, modulePath) { | CODE |
| LOW | tests/asset-prefix.test.ts | 453 | function directoryContainsFileWithExtension(dir: string, extension: string): boolean { | CODE |
| LOW | tests/pages-router.test.ts | 46 | function writeMiddlewareRewritePriorityFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 162 | function writePagesAppGlobalCssFixture(rootDir: string): PagesAppGlobalCssFixture { | CODE |
| LOW | tests/pages-router.test.ts | 312 | function writeEncodedSlashPagesFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 347 | function writeOptionalCatchAllRootFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 378 | function writeGsspAppInitialPropsContextFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 526 | 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 | 12 | function linkWorkspaceDependencies(root: string): void { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 192 | function renderPagePayloadToStream(payload: unknown): ReadableStream<Uint8Array> { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 239 | function expectCachedAppPageSearchParamsObservation(value: unknown, html: string): void { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 251 | function buildQueryInvariantRenderObservation(): RenderObservation { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 458 | function createParamTextPageElement(prefix = "element") { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 469 | function createPprBlogDispatchOptions(overrides: CreateDispatchOptionsOverrides = {}) { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 482 | function createPprBlogFallbackShellGetter(stale: boolean) { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 494 | function createFreshBodySsrHandler(body: string): DispatchOptions["loadSsrHandler"] { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 502 | function createVerifiedStaticLayoutManifest(input: { | CODE |
| LOW | tests/helpers.ts | 212 | export async function requestNodeServerWithHost( | CODE |
| LOW | tests/helpers.ts | 332 | export async function buildCloudflareAppFixture(fixtureDir: string): Promise<{ | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 196 | function countSuspenseWithFallback(node: unknown, fallbackTypeName: string): number { | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 395 | async function buildGeneratedMetadataRouteHtml( | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 4373 | function buildStaticBranchElements(branch: "account" | "admin") { | CODE |
| LOW | tests/worker-entry-source.ts | 12 | export function readPagesRouterEntrySource(): string { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 97 | function createNoopRscEmbedTransform() { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 448 | function createFastSuspenseDocument() { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 472 | async function renderFastSuspenseDocument(waitBeforePipe: boolean): Promise<string> { | CODE |
| LOW | tests/app-router-isr-codegen.test.ts | 204 | expect(code).toContain("export async function seedMemoryCacheFromPrerender(serverDir)"); | CODE |
| LOW | tests/cache-adapters-config.test.ts | 46 | expect(code).toContain("export function registerConfiguredCacheAdapters() {}"); | CODE |
| LOW | tests/app-page-cache.test.ts | 32 | function createHeaderClearingCdnAdapter(): CdnCacheAdapter { | CODE |
| LOW | tests/app-page-cache.test.ts | 90 | function buildQueryInvariantRenderObservation(): RenderObservation { | 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 | 108 | function writeProjectWithInlineNextConfig(nextConfig: string): void { | CODE |
| LOW | tests/init.test.ts | 60 | function readPluginRscVendoredEdgeBundle(fileName: string): string { | CODE |
| LOW | tests/init.test.ts | 71 | function expectConsumedBeforeInitialization( | CODE |
| LOW | tests/app-pages-bridge.test.ts | 40 | async function renderHybridEdgeApiResponse(hostRuntime: "node" | "worker") { | CODE |
| LOW | tests/font-google-build.test.ts | 12 | async function buildFontGoogleMultipleFixture(): Promise<string> { | CODE |
| LOW | tests/app-router-worker-entry.test.ts | 9 | function workerEntryVirtualModules(): Plugin { | CODE |
| LOW | tests/app-router-worker-entry.test.ts | 24 | ["virtual:vinext-cache-adapters", "export function registerConfiguredCacheAdapters() {}"], | CODE |
| LOW | tests/app-router-worker-entry.test.ts | 25 | ["virtual:vinext-image-adapters", "export function registerConfiguredImageOptimizer() {}"], | CODE |
| LOW | tests/app-optimistic-routing.test.ts | 102 | function dashboardManifestWithoutProfile(): RouteManifest { | CODE |
| LOW | tests/app-optimistic-routing.test.ts | 139 | function createBlogLoadingShellElements(): AppElements { | CODE |
| LOW | tests/app-optimistic-routing.test.ts | 166 | function createSettingsLoadingShellElements(): AppElements { | CODE |
| LOW | tests/app-route-handler-trailing-slash.test.ts | 20 | function copyAppFixtureWithTrailingSlash(prefix: string, trailingSlash: boolean): string { | CODE |
| LOW | tests/import-meta-url.test.ts | 38 | function expectBundledImportMetaUrl(code: string | undefined): void { | CODE |
| LOW | tests/import-meta-url.test.ts | 44 | function expectFinalizedImportMetaUrl(code: string | undefined, fileName = "entry.js"): void { | CODE |
| LOW | tests/import-meta-url.test.ts | 98 | function transformOptimizedDependency(code: string, id: string) { | CODE |
| LOW | tests/tsconfig-path-alias-resolution.test.ts | 60 | function writeOverlappingAliasFixture(root: string) { | CODE |
| LOW | tests/app-page-render.test.ts | 217 | function createVerifiedStaticLayoutManifest(input: { | CODE |
| LOW | tests/invalid-static-asset-404.test.ts | 42 | async function buildAppFixtureWithConfig( | CODE |
| LOW | tests/invalid-static-asset-404.test.ts | 77 | function findClientRuntimeManifestBuildId(outDir: string, pathPrefix: string): string | undefined { | CODE |
| LOW | tests/build-optimization.test.ts | 76 | function getEnvBuildBundlerOptions(env: any) { | CODE |
| LOW | tests/build-optimization.test.ts | 2660 | function simulateAssetTagFiltering(ssrManifestFiles: string[], lazyChunks: string[]): string[] { | CODE |
| LOW | tests/app-router-production-server.test.ts | 176 | async function startDelayedJsonSequenceTarget(delayMs: number): Promise<StartedTextSequenceTarget> { | CODE |
| 1690 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vite.config.ts | 241 | }, | COMMENT |
| LOW | tests/app-rsc-route-matching.test.ts | 561 | // | COMMENT |
| LOW | tests/pages-router.test.ts | 5561 | >; | COMMENT |
| LOW | tests/font-google.test.ts | 1421 | 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/link.test.ts | 1641 | }); | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 581 | // https://github.com/vercel/next.js/blob/canary/test/e2e/app-dir/parallel-routes-and-interception/parallel-routes-a | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 1241 | const location = res.headers.get("location"); | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 1381 | // promise (to preserve loading.tsx streaming for non-redirecting | 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/build-optimization.test.ts | 41 | const _stripServerExports = (code: string): string | null => | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 761 | for (const tag of dynamicScriptPreloads) { | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 2341 | // Regression for a bug where a middleware that reads `next/headers` → | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 2461 | // route chunks are hoisted into the entry chunk, and the lazy chunks then | COMMENT |
| LOW | tests/head.test.ts | 721 | }); | 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/kv-cache-handler.test.ts | 1081 | expect(kv.get).toHaveBeenCalledTimes(3); | COMMENT |
| LOW | tests/link-navigation.test.ts | 801 | }); | COMMENT |
| LOW | tests/link-navigation.test.ts | 1061 | }); | COMMENT |
| LOW | tests/entry-templates.test.ts | 921 | ]); | COMMENT |
| LOW | tests/prerender.test.ts | 1541 | COMMENT | |
| LOW | tests/cache-adapters-build.test.ts | 181 | logLevel: "silent", | COMMENT |
| LOW | tests/app-page-element-builder.test.ts | 541 | // The error payload uses the AppElementsWire route-id encoder for both | 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 | 441 | expect(body).not.toContain("Internal Server Error"); | COMMENT |
| LOW | tests/nextjs-compat/not-found.test.ts | 461 | // FIXTURE: fixtures/app-basic/app/nextjs-compat/not-found-error-boundary/nested/nested-2/page.tsx | 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 | 281 | const res = await fetch(`${_baseUrl}${NAV_ROUTE}`); | 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 | 121 | // | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 201 | // ── Self-throwing global-error -> built-in default fallback ── | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 241 | const { html } = await fetchHtml(baseUrl, route); | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 261 | // SKIP: Nested client error auto-thrown via useEffect/setTimeout -> global-error | 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 | 161 | // SKIP: 'should handle next/dynamic in hydration correctly' | COMMENT |
| LOW | tests/nextjs-compat/dynamic.test.ts | 181 | // WHY: Dev-only behavior — slow loader shows loading component. In production | COMMENT |
| LOW | tests/nextjs-compat/dynamic.test.ts | 201 | // WHY: Tests edge runtime variant + build manifest inspection. Both need Playwright | 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 |
| 206 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 | 1000 | // Step 1: Detect project structure | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 1020 | // Step 2: Validate init-owned dependencies and deployment scaffolding. | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 1094 | // Step 5: Build | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 1160 | // Step 7: Deploy via wrangler | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 331 | // Step 1: extract regex groups and replace with numbered placeholders. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 338 | // Step 2: single-pass conversion of the placeholder-bearing string. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 187 | // Step 2: Guard against protocol-relative open redirects on the raw pathname. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 193 | // Step 3: Strict segment-wise percent-decode. Preserves encoded path delimiters | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 203 | // Step 4: Collapse double-slashes and resolve . / .. segments. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 208 | // Step 5: basePath check and strip. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 228 | // Step 8: Validate and sanitize X-Vinext-Interception-Context. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 247 | // Step 9: Normalize mounted-slots header for canonical cache keying. | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 316 | // Step 1: Reconstruct basePathState | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 319 | // Step 2: Trailing-slash normalization. Adapters must rewrite `_next/data` | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 331 | // Step 3: Build pre-middleware request context | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 340 | // Step 4: Config redirects (before middleware) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 557 | // Step 7: Config headers staging | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 567 | // Step 8: External-URL proxy (post-mw rewrite target) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 674 | // Step 11: API routes | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 678 | // Step 12: afterFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 372 | // Step 5: Middleware | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 501 | // Step 6: Unpack middleware request headers | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 583 | // Step 9: beforeFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 730 | // Step 13: Render + fallback rewrites | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/cloudflare/src/deploy.ts | 1000 | // Step 1: Detect project structure | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 1020 | // Step 2: Validate init-owned dependencies and deployment scaffolding. | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 1094 | // Step 5: Build | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 1160 | // Step 7: Deploy via wrangler | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 331 | // Step 1: extract regex groups and replace with numbered placeholders. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 338 | // Step 2: single-pass conversion of the placeholder-bearing string. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 187 | // Step 2: Guard against protocol-relative open redirects on the raw pathname. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 193 | // Step 3: Strict segment-wise percent-decode. Preserves encoded path delimiters | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 203 | // Step 4: Collapse double-slashes and resolve . / .. segments. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 208 | // Step 5: basePath check and strip. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 228 | // Step 8: Validate and sanitize X-Vinext-Interception-Context. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 247 | // Step 9: Normalize mounted-slots header for canonical cache keying. | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 316 | // Step 1: Reconstruct basePathState | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 319 | // Step 2: Trailing-slash normalization. Adapters must rewrite `_next/data` | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 331 | // Step 3: Build pre-middleware request context | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 340 | // Step 4: Config redirects (before middleware) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 557 | // Step 7: Config headers staging | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 567 | // Step 8: External-URL proxy (post-mw rewrite target) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 674 | // Step 11: API routes | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 678 | // Step 12: afterFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 372 | // Step 5: Middleware | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 501 | // Step 6: Unpack middleware request headers | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 583 | // Step 9: beforeFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 730 | // Step 13: Render + fallback rewrites | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/build-time-classification-integration.test.ts | 236 | // 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 | 266 | # during the test harness's destroy() cleanup. vinext doesn't produce one, so | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 269 | # on failure — otherwise the test harness logs ENOENT noise (303 lines per | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 701 | # Dependency-manager deprecation summaries describe the deploy harness's own | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 745 | # 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 |
| 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 | 156 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 197 | const source = `export async function getData() { return 1; }`; | CODE |
| LOW | tests/use-cache-transform.test.ts | 213 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 310 | const source = `export async function getData() { return 1; }`; | CODE |
| LOW | tests/use-cache-transform.test.ts | 416 | [`export async function getData() {`, ` "use cache: durable-cache";`, `}`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 461 | [`export function getData() {`, ` "use cache";`, `}`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 481 | [`"use cache";`, `export function getData() { return 1; }`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 585 | [`export async function getData() {`, ` ${JSON.stringify(directive)};`, `}`].join("\n"), | CODE |
| LOW | tests/use-cache-transform.test.ts | 602 | `export async function getData() {`, | CODE |
| LOW | tests/use-cache-transform.test.ts | 674 | [`"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/pages-router-entry.ts | 110 | async function handleRequest( | CODE |
| LOW | packages/vinext/src/server/app-router-entry.ts | 90 | async function handleRequest( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/app-router-dev-server.test.ts | 101 | const rscModuleIds = server.environments.rsc.moduleGraph.idToModuleMap.keys(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …vinext/src/server/app-browser-navigation-controller.ts | 937 | // Intentionally retained as #726-OPS-01 trace-shell scaffolding. The | COMMENT |
| MEDIUM | .github/workflows/nextjs-deploy-suite.yml | 215 | # e2e-deploy.sh dependency injection), the scripts, the prepared | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 181 | # 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 | scripts/test-repos.sh | 185 | # Print results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/metadata-routes.test.ts | 239 | uploader: { info: "https://example.com/authors/jane", content: "Jane Doe" }, | CODE |