11import type { PfeDevServerInternalConfig } from './pfe-dev-server.js' ;
22
3- import Router , { type Middleware } from '@koa/router' ;
3+ import Router , { type RouterMiddleware } from '@koa/router' ;
4+ import type { DefaultState , DefaultContext , Middleware } from 'koa' ;
45
56import { makeDemoEnv } from '../../environment.js' ;
67import { deslugify } from '../../config.js' ;
78
8- type PfeMiddleware = ( config : PfeDevServerInternalConfig ) => Middleware ;
9+ type PfeMiddleware =
10+ ( config : PfeDevServerInternalConfig ) => RouterMiddleware < DefaultState , DefaultContext > ;
911
1012/**
1113 * The environment file contains information from the serverside
@@ -91,11 +93,13 @@ const demoSubresourceMiddleware: PfeMiddleware = config => (ctx, next) => {
9193 */
9294export function pfeDevServerRouterMiddleware (
9395 config : PfeDevServerInternalConfig ,
94- ) : Router . Middleware {
96+ ) : Middleware {
9597 const { elementsDir, site : { componentSubpath } } = config ;
9698 const router = new Router ( ) ;
9799 const shim = lightdomShimMiddleware ( config ) ;
98100 const demo = demoSubresourceMiddleware ( config ) ;
101+ // RouterComposedMiddleware (from router.routes()) is compatible with Middleware at runtime
102+ // but TypeScript can't infer this because RouterComposedMiddleware isn't exported
99103 return router
100104 . get ( '/tools/pfe-tools/environment.js(.js)?' , environmentMiddleware ( config ) )
101105 . get ( `/core/pfe-core/:splatPath*.js` , coreMiddleware ( config ) )
@@ -107,5 +111,5 @@ export function pfeDevServerRouterMiddleware(
107111 . get ( `/${ componentSubpath } /:unprefixedElementSlug/:sheetName-lightdom.css` , shim )
108112 . get ( `/${ componentSubpath } /:unprefixedElementSlug/demo/:demoName/:fileName.:ext` , demo )
109113 . get ( `/${ componentSubpath } /:unprefixedElementSlug/demo/:fileName.:ext` , demo )
110- . routes ( ) ;
114+ . routes ( ) as Middleware ;
111115}
0 commit comments