From 76f3ab400d0073eee31f2db68b66f1fb4709c701 Mon Sep 17 00:00:00 2001 From: Thimo Sietsma Date: Mon, 26 Aug 2024 21:57:58 +0200 Subject: [PATCH] fix(nuxt): do not accept arbitrary strings for `MiddlewareKey` (#28676) --- nuxt.config.ts | 7 ++++++- packages/nuxt/src/pages/module.ts | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/nuxt.config.ts b/nuxt.config.ts index 694788ebb0..54f547026e 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,16 +1,21 @@ // For pnpm typecheck:docs to generate correct types -import { addPluginTemplate } from 'nuxt/kit' +import { addPluginTemplate, addRouteMiddleware } from 'nuxt/kit' export default defineNuxtConfig({ typescript: { shim: process.env.DOCS_TYPECHECK === 'true' }, pages: process.env.DOCS_TYPECHECK === 'true', modules: [ function () { + if (!process.env.DOCS_TYPECHECK) { return } addPluginTemplate({ filename: 'plugins/my-plugin.mjs', getContents: () => 'export default defineNuxtPlugin({ name: \'my-plugin\' })', }) + addRouteMiddleware({ + name: 'auth', + path: '#build/auth.js', + }) }, ], }) diff --git a/packages/nuxt/src/pages/module.ts b/packages/nuxt/src/pages/module.ts index 35a6f10af8..5e79e31746 100644 --- a/packages/nuxt/src/pages/module.ts +++ b/packages/nuxt/src/pages/module.ts @@ -515,7 +515,7 @@ export default defineNuxtModule({ const namedMiddleware = app.middleware.filter(mw => !mw.global) return [ 'import type { NavigationGuard } from \'vue-router\'', - `export type MiddlewareKey = ${namedMiddleware.map(mw => genString(mw.name)).join(' | ') || 'string'}`, + `export type MiddlewareKey = ${namedMiddleware.map(mw => genString(mw.name)).join(' | ') || 'never'}`, `declare module ${genString(composablesFile)} {`, ' interface PageMeta {', ' middleware?: MiddlewareKey | NavigationGuard | Array',