@@ -8,25 +8,41 @@ import type { TWConfig, ViewerConfig } from './types'
8
8
9
9
export const setupViewer = async ( twConfig : Partial < TWConfig > , config : ViewerConfig , nuxt = useNuxt ( ) ) => {
10
10
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 ) ]
23
12
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
+ }
27
43
28
44
nuxt . hook ( 'listen' , ( _ , listener ) => {
29
- const viewerUrl = ` ${ cleanDoubleSlashes ( joinURL ( withoutTrailingSlash ( listener . url ) , config . endpoint ) ) } `
45
+ const viewerUrl = cleanDoubleSlashes ( joinURL ( listener . url , config . endpoint ) )
30
46
logger . info ( `Tailwind Viewer: ${ underline ( yellow ( withTrailingSlash ( viewerUrl ) ) ) } ` )
31
47
} )
32
48
}
0 commit comments