From bf3f687fd000c5fb4424e9e3515691ce6b993d28 Mon Sep 17 00:00:00 2001 From: Lars Hagen Date: Wed, 1 Oct 2025 12:49:38 +0200 Subject: [PATCH 1/2] fix(turbopack): restore full pattern and remove middleware crash workaround --- demos/turbopack-next15/package.json | 14 +++++------ demos/turbopack-next15/src/middleware.ts | 18 +++++--------- demos/turbopack-next15/tsconfig.json | 23 ++++++++++++++---- packages/turbopack/src/index.ts | 30 ++---------------------- 4 files changed, 33 insertions(+), 52 deletions(-) diff --git a/demos/turbopack-next15/package.json b/demos/turbopack-next15/package.json index 3a3b75b..a81ca61 100644 --- a/demos/turbopack-next15/package.json +++ b/demos/turbopack-next15/package.json @@ -9,22 +9,22 @@ "lint": "next lint" }, "dependencies": { - "next": "15.5.3", + "next": "15.6.0-canary.38", "react": "19.1.1", "react-dom": "19.1.1" }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", "@mdx-js/loader": "^3.1.1", - "@next/mdx": "15.5.3", + "@next/mdx": "15.6.0-canary.38", "@tailwindcss/postcss": "^4.1.13", - "@types/node": "^24.3.1", - "@types/react": "^19.1.12", + "@types/node": "^24.6.1", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "code-inspector-plugin": "workspace:^", - "eslint": "^9.35.0", - "eslint-config-next": "15.5.3", + "eslint": "^9.36.0", + "eslint-config-next": "15.6.0-canary.38", "tailwindcss": "^4.1.13", - "typescript": "^5.9.2" + "typescript": "^5.9.3" } } diff --git a/demos/turbopack-next15/src/middleware.ts b/demos/turbopack-next15/src/middleware.ts index 916561c..6ab11d8 100644 --- a/demos/turbopack-next15/src/middleware.ts +++ b/demos/turbopack-next15/src/middleware.ts @@ -1,15 +1,9 @@ -// Middleware file to verify turbopack compatibility -// -// ⚠️ This file should be REMOVED once Turbopack fixes the middleware issue ⚠️ -// -// With the improved pattern '**/app/**/*.{jsx,tsx,js,ts,mjs,mts}' in the turbopack plugin, -// code-inspector only processes files in app directories, naturally excluding middleware files. -// This prevents the Turbopack crash issue by default. -// -// This is still a workaround. Track the issues for removal: -// - https://github.com/vercel/next.js/issues/79592 -// - https://github.com/zh-lx/code-inspector/issues/357 +// Middleware file to verify code-inspector works with middleware present +// +// This file proves that code-inspector is compatible with Next.js middleware. +// The middleware crash bug existed in Next.js 15.4.4 and below but has been +// fixed in Next.js 15.6.0-canary.38 and later versions. export function middleware() { - // Empty middleware - its presence is enough to test the workaround + // Empty middleware - its presence is enough to verify compatibility } \ No newline at end of file diff --git a/demos/turbopack-next15/tsconfig.json b/demos/turbopack-next15/tsconfig.json index c133409..0e0e523 100644 --- a/demos/turbopack-next15/tsconfig.json +++ b/demos/turbopack-next15/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -11,7 +15,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { @@ -19,9 +23,18 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } diff --git a/packages/turbopack/src/index.ts b/packages/turbopack/src/index.ts index 7cedad9..e95e9fa 100644 --- a/packages/turbopack/src/index.ts +++ b/packages/turbopack/src/index.ts @@ -35,32 +35,8 @@ export function TurbopackCodeInspectorPlugin( } const WebpackDistDir = path.resolve(WebpackEntry, '..'); - // according to: https://nextjs.org/docs/app/getting-started/project-structure#routing-files - const validFiles = [ - '*.jsx', - '*.tsx', - 'layout.js', - 'layout.ts', - 'page.js', - 'page.ts', - 'loading.js', - 'loading.ts', - 'not-found.js', - 'not-found.ts', - 'error.js', - 'error.ts', - 'global-error.js', - 'global-error.ts', - 'template.js', - 'template.ts', - 'default.js', - 'default.ts', - ]; - - const matchFiles = `**/{${validFiles.join(',')}}`; - return { - [matchFiles]: { + '**/*.{jsx,tsx,js,ts,mjs,mts}': { loaders: [ { loader: `${WebpackDistDir}/loader.js`, @@ -68,7 +44,6 @@ export function TurbopackCodeInspectorPlugin( ...options, record, }, - ...(options.enforcePre === false ? {} : { enforce: 'pre' }), }, { loader: `${WebpackDistDir}/inject-loader.js`, @@ -76,9 +51,8 @@ export function TurbopackCodeInspectorPlugin( ...options, record, }, - enforce: 'pre', }, ], }, }; -} +} \ No newline at end of file From cf0183ae8ec2eb9be95468ac8e72bdc73d8e173e Mon Sep 17 00:00:00 2001 From: lars-hagen Date: Tue, 4 Nov 2025 18:59:50 +0100 Subject: [PATCH 2/2] chore: upgrade turbopack demo to Next.js 16 and remove version from folder name --- .../.gitignore | 0 .../README.md | 0 .../eslint.config.mjs | 0 .../next.config.ts | 0 demos/turbopack-next/package.json | 30 ++++++++++++++++++ .../postcss.config.mjs | 0 .../public/file.svg | 0 .../public/globe.svg | 0 .../public/next.svg | 0 .../public/vercel.svg | 0 .../public/window.svg | 0 .../src/app/favicon.ico | Bin .../src/app/globals.css | 0 .../src/app/layout.tsx | 0 .../src/app/mdx/page.mdx | 0 .../src/app/page.tsx | 0 .../src/app/welcome.mdx | 0 .../tsconfig.json | 3 +- demos/turbopack-next15/package.json | 30 ------------------ demos/turbopack-next15/src/middleware.ts | 9 ------ 20 files changed, 32 insertions(+), 40 deletions(-) rename demos/{turbopack-next15 => turbopack-next}/.gitignore (100%) rename demos/{turbopack-next15 => turbopack-next}/README.md (100%) rename demos/{turbopack-next15 => turbopack-next}/eslint.config.mjs (100%) rename demos/{turbopack-next15 => turbopack-next}/next.config.ts (100%) create mode 100644 demos/turbopack-next/package.json rename demos/{turbopack-next15 => turbopack-next}/postcss.config.mjs (100%) rename demos/{turbopack-next15 => turbopack-next}/public/file.svg (100%) rename demos/{turbopack-next15 => turbopack-next}/public/globe.svg (100%) rename demos/{turbopack-next15 => turbopack-next}/public/next.svg (100%) rename demos/{turbopack-next15 => turbopack-next}/public/vercel.svg (100%) rename demos/{turbopack-next15 => turbopack-next}/public/window.svg (100%) rename demos/{turbopack-next15 => turbopack-next}/src/app/favicon.ico (100%) rename demos/{turbopack-next15 => turbopack-next}/src/app/globals.css (100%) rename demos/{turbopack-next15 => turbopack-next}/src/app/layout.tsx (100%) rename demos/{turbopack-next15 => turbopack-next}/src/app/mdx/page.mdx (100%) rename demos/{turbopack-next15 => turbopack-next}/src/app/page.tsx (100%) rename demos/{turbopack-next15 => turbopack-next}/src/app/welcome.mdx (100%) rename demos/{turbopack-next15 => turbopack-next}/tsconfig.json (91%) delete mode 100644 demos/turbopack-next15/package.json delete mode 100644 demos/turbopack-next15/src/middleware.ts diff --git a/demos/turbopack-next15/.gitignore b/demos/turbopack-next/.gitignore similarity index 100% rename from demos/turbopack-next15/.gitignore rename to demos/turbopack-next/.gitignore diff --git a/demos/turbopack-next15/README.md b/demos/turbopack-next/README.md similarity index 100% rename from demos/turbopack-next15/README.md rename to demos/turbopack-next/README.md diff --git a/demos/turbopack-next15/eslint.config.mjs b/demos/turbopack-next/eslint.config.mjs similarity index 100% rename from demos/turbopack-next15/eslint.config.mjs rename to demos/turbopack-next/eslint.config.mjs diff --git a/demos/turbopack-next15/next.config.ts b/demos/turbopack-next/next.config.ts similarity index 100% rename from demos/turbopack-next15/next.config.ts rename to demos/turbopack-next/next.config.ts diff --git a/demos/turbopack-next/package.json b/demos/turbopack-next/package.json new file mode 100644 index 0000000..e3e8a77 --- /dev/null +++ b/demos/turbopack-next/package.json @@ -0,0 +1,30 @@ +{ + "name": "turbopack-next", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev --turbopack", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "next": "16.0.1", + "react": "19.2.0", + "react-dom": "19.2.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.3.1", + "@mdx-js/loader": "^3.1.1", + "@next/mdx": "16.0.1", + "@tailwindcss/postcss": "^4.1.16", + "@types/node": "^24.10.0", + "@types/react": "^19.2.2", + "@types/react-dom": "^19.2.2", + "code-inspector-plugin": "workspace:^", + "eslint": "^9.39.1", + "eslint-config-next": "16.0.1", + "tailwindcss": "^4.1.16", + "typescript": "^5.9.3" + } +} diff --git a/demos/turbopack-next15/postcss.config.mjs b/demos/turbopack-next/postcss.config.mjs similarity index 100% rename from demos/turbopack-next15/postcss.config.mjs rename to demos/turbopack-next/postcss.config.mjs diff --git a/demos/turbopack-next15/public/file.svg b/demos/turbopack-next/public/file.svg similarity index 100% rename from demos/turbopack-next15/public/file.svg rename to demos/turbopack-next/public/file.svg diff --git a/demos/turbopack-next15/public/globe.svg b/demos/turbopack-next/public/globe.svg similarity index 100% rename from demos/turbopack-next15/public/globe.svg rename to demos/turbopack-next/public/globe.svg diff --git a/demos/turbopack-next15/public/next.svg b/demos/turbopack-next/public/next.svg similarity index 100% rename from demos/turbopack-next15/public/next.svg rename to demos/turbopack-next/public/next.svg diff --git a/demos/turbopack-next15/public/vercel.svg b/demos/turbopack-next/public/vercel.svg similarity index 100% rename from demos/turbopack-next15/public/vercel.svg rename to demos/turbopack-next/public/vercel.svg diff --git a/demos/turbopack-next15/public/window.svg b/demos/turbopack-next/public/window.svg similarity index 100% rename from demos/turbopack-next15/public/window.svg rename to demos/turbopack-next/public/window.svg diff --git a/demos/turbopack-next15/src/app/favicon.ico b/demos/turbopack-next/src/app/favicon.ico similarity index 100% rename from demos/turbopack-next15/src/app/favicon.ico rename to demos/turbopack-next/src/app/favicon.ico diff --git a/demos/turbopack-next15/src/app/globals.css b/demos/turbopack-next/src/app/globals.css similarity index 100% rename from demos/turbopack-next15/src/app/globals.css rename to demos/turbopack-next/src/app/globals.css diff --git a/demos/turbopack-next15/src/app/layout.tsx b/demos/turbopack-next/src/app/layout.tsx similarity index 100% rename from demos/turbopack-next15/src/app/layout.tsx rename to demos/turbopack-next/src/app/layout.tsx diff --git a/demos/turbopack-next15/src/app/mdx/page.mdx b/demos/turbopack-next/src/app/mdx/page.mdx similarity index 100% rename from demos/turbopack-next15/src/app/mdx/page.mdx rename to demos/turbopack-next/src/app/mdx/page.mdx diff --git a/demos/turbopack-next15/src/app/page.tsx b/demos/turbopack-next/src/app/page.tsx similarity index 100% rename from demos/turbopack-next15/src/app/page.tsx rename to demos/turbopack-next/src/app/page.tsx diff --git a/demos/turbopack-next15/src/app/welcome.mdx b/demos/turbopack-next/src/app/welcome.mdx similarity index 100% rename from demos/turbopack-next15/src/app/welcome.mdx rename to demos/turbopack-next/src/app/welcome.mdx diff --git a/demos/turbopack-next15/tsconfig.json b/demos/turbopack-next/tsconfig.json similarity index 91% rename from demos/turbopack-next15/tsconfig.json rename to demos/turbopack-next/tsconfig.json index 0e0e523..b575f7d 100644 --- a/demos/turbopack-next15/tsconfig.json +++ b/demos/turbopack-next/tsconfig.json @@ -32,7 +32,8 @@ "next-env.d.ts", "**/*.ts", "**/*.tsx", - ".next/types/**/*.ts" + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" ], "exclude": [ "node_modules" diff --git a/demos/turbopack-next15/package.json b/demos/turbopack-next15/package.json deleted file mode 100644 index a81ca61..0000000 --- a/demos/turbopack-next15/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "turbopack-next15", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev --turbopack", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "next": "15.6.0-canary.38", - "react": "19.1.1", - "react-dom": "19.1.1" - }, - "devDependencies": { - "@eslint/eslintrc": "^3.3.1", - "@mdx-js/loader": "^3.1.1", - "@next/mdx": "15.6.0-canary.38", - "@tailwindcss/postcss": "^4.1.13", - "@types/node": "^24.6.1", - "@types/react": "^19.1.16", - "@types/react-dom": "^19.1.9", - "code-inspector-plugin": "workspace:^", - "eslint": "^9.36.0", - "eslint-config-next": "15.6.0-canary.38", - "tailwindcss": "^4.1.13", - "typescript": "^5.9.3" - } -} diff --git a/demos/turbopack-next15/src/middleware.ts b/demos/turbopack-next15/src/middleware.ts deleted file mode 100644 index 6ab11d8..0000000 --- a/demos/turbopack-next15/src/middleware.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Middleware file to verify code-inspector works with middleware present -// -// This file proves that code-inspector is compatible with Next.js middleware. -// The middleware crash bug existed in Next.js 15.4.4 and below but has been -// fixed in Next.js 15.6.0-canary.38 and later versions. - -export function middleware() { - // Empty middleware - its presence is enough to verify compatibility -} \ No newline at end of file