@@ -8,25 +8,41 @@ import type { TWConfig, ViewerConfig } from './types'
88
99export 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