From b026797d7b0958c164d0b939808cb28ba8f9d7d4 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Thu, 20 Jun 2024 23:18:25 +0100 Subject: [PATCH] feat(nuxt): await custom `routes` function in `router.options` (#27644) --- packages/nuxt/src/pages/build.d.ts | 6 ++++++ packages/nuxt/src/pages/runtime/plugins/prerender.server.ts | 1 - packages/nuxt/src/pages/runtime/plugins/router.ts | 3 +-- packages/schema/src/types/router.ts | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 packages/nuxt/src/pages/build.d.ts diff --git a/packages/nuxt/src/pages/build.d.ts b/packages/nuxt/src/pages/build.d.ts new file mode 100644 index 0000000000..4a17fca4e5 --- /dev/null +++ b/packages/nuxt/src/pages/build.d.ts @@ -0,0 +1,6 @@ +declare module '#build/router.options' { + import type { RouterOptions } from '@nuxt/schema' + + const _default: RouterOptions + export default _default +} diff --git a/packages/nuxt/src/pages/runtime/plugins/prerender.server.ts b/packages/nuxt/src/pages/runtime/plugins/prerender.server.ts index a8cf539151..9a191f9dce 100644 --- a/packages/nuxt/src/pages/runtime/plugins/prerender.server.ts +++ b/packages/nuxt/src/pages/runtime/plugins/prerender.server.ts @@ -5,7 +5,6 @@ import { defineNuxtPlugin } from '#app/nuxt' import { prerenderRoutes } from '#app/composables/ssr' // @ts-expect-error virtual file import _routes from '#build/routes' -// @ts-expect-error virtual file import routerOptions from '#build/router.options' let routes: string[] diff --git a/packages/nuxt/src/pages/runtime/plugins/router.ts b/packages/nuxt/src/pages/runtime/plugins/router.ts index fccd8ff78a..f284a80d29 100644 --- a/packages/nuxt/src/pages/runtime/plugins/router.ts +++ b/packages/nuxt/src/pages/runtime/plugins/router.ts @@ -24,7 +24,6 @@ import { navigateTo } from '#app/composables/router' import { appManifest as isAppManifestEnabled } from '#build/nuxt.config.mjs' // @ts-expect-error virtual file import _routes from '#build/routes' -// @ts-expect-error virtual file import routerOptions from '#build/router.options' // @ts-expect-error virtual file import { globalMiddleware, namedMiddleware } from '#build/middleware' @@ -67,7 +66,7 @@ const plugin: Plugin<{ router: Router }> = defineNuxtPlugin({ : createMemoryHistory(routerBase) ) - const routes = routerOptions.routes?.(_routes) ?? _routes + const routes = routerOptions.routes ? await routerOptions.routes(_routes) ?? _routes : _routes let startPosition: Parameters[2] | null diff --git a/packages/schema/src/types/router.ts b/packages/schema/src/types/router.ts index 76abc6acb8..c7cb0ce850 100644 --- a/packages/schema/src/types/router.ts +++ b/packages/schema/src/types/router.ts @@ -2,7 +2,7 @@ import type { RouterHistory, RouterOptions as _RouterOptions } from 'vue-router' export type RouterOptions = Partial> & { history?: (baseURL?: string) => RouterHistory - routes?: (_routes: _RouterOptions['routes']) => _RouterOptions['routes'] + routes?: (_routes: _RouterOptions['routes']) => _RouterOptions['routes'] | Promise<_RouterOptions['routes']> hashMode?: boolean scrollBehaviorType?: 'smooth' | 'auto' }