Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 734ef1c

Browse files
committed
fix(viewer): handle redirect and callback await, thank you danielroe :)
1 parent 5971b0a commit 734ef1c

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

src/viewer.ts

+32-16
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,41 @@ import type { TWConfig, ViewerConfig } from './types'
88

99
export const setupViewer = async (twConfig: Partial<TWConfig>, config: ViewerConfig, nuxt = useNuxt()) => {
1010
const route = joinURL(nuxt.options.app?.baseURL, config.endpoint)
11-
// @ts-ignore
12-
const createServer = await import('tailwind-config-viewer/server/index.js').then(r => r.default || r) as any
13-
const routerPrefix = isNuxt3() ? route : undefined
14-
15-
const _viewerDevMiddleware = createServer({ tailwindConfigProvider: () => twConfig, routerPrefix }).asMiddleware()
16-
const viewerDevMiddleware = eventHandler((event) => {
17-
const withoutSlash = withoutTrailingSlash(route)
18-
if (event.node?.req.url === withoutSlash || event.req.url === withoutSlash) {
19-
return sendRedirect(event, route, 301)
20-
}
21-
_viewerDevMiddleware(event.node?.req || event.req, event.node?.res || event.res)
22-
})
11+
const [routeWithSlash, routeWithoutSlash] = [withTrailingSlash(route), withoutTrailingSlash(route)]
2312

24-
if (isNuxt3()) { addDevServerHandler({ route, handler: viewerDevMiddleware }) }
25-
// @ts-ignore
26-
if (isNuxt2()) { nuxt.options.serverMiddleware.push({ route, handler: (req, res) => viewerDevMiddleware(new H3Event(req, res)) }) }
13+
// @ts-expect-error untyped package export
14+
const viewerServer = (await import('tailwind-config-viewer/server/index.js').then(r => r.default || r))({ tailwindConfigProvider: () => twConfig }).asMiddleware()
15+
const viewerDevMiddleware = eventHandler(event => viewerServer(event.node?.req || event.req, event.node?.res || event.res))
16+
17+
if (isNuxt3()) {
18+
addDevServerHandler({
19+
handler: eventHandler(event => {
20+
if (event.path === routeWithoutSlash) {
21+
return sendRedirect(event, routeWithSlash, 301)
22+
}
23+
})
24+
})
25+
addDevServerHandler({ route, handler: viewerDevMiddleware })
26+
}
27+
28+
if (isNuxt2()) {
29+
// @ts-expect-error untyped nuxt2 property
30+
nuxt.options.serverMiddleware.push(
31+
// @ts-expect-error untyped handler parameters
32+
(req, res, next) => {
33+
if (req.url === routeWithoutSlash) {
34+
return sendRedirect(new H3Event(req, res), routeWithSlash, 301)
35+
}
36+
37+
next();
38+
},
39+
// @ts-expect-error untyped handler parameters
40+
{ route, handler: (req, res) => viewerDevMiddleware(new H3Event(req, res)) }
41+
)
42+
}
2743

2844
nuxt.hook('listen', (_, listener) => {
29-
const viewerUrl = `${cleanDoubleSlashes(joinURL(withoutTrailingSlash(listener.url), config.endpoint))}`
45+
const viewerUrl = cleanDoubleSlashes(joinURL(listener.url, config.endpoint))
3046
logger.info(`Tailwind Viewer: ${underline(yellow(withTrailingSlash(viewerUrl)))}`)
3147
})
3248
}

0 commit comments

Comments
 (0)