11import type http from 'node:http' ;
22import colors from 'colors/safe' ;
3- import type express from 'express' ;
43
54import type { Plugin } from '../types' ;
65import appStart from './app-start' ;
76import eventsHandler from './domain/events-handler' ;
8- import type { HttpServerAdapterFactory } from './domain/http-server/types' ;
7+ import type {
8+ HttpServerAdapterFactory ,
9+ NativeApp
10+ } from './domain/http-server/types' ;
911import sanitiseOptions , { RegistryOptions } from './domain/options-sanitiser' ;
1012import * as pluginsInitialiser from './domain/plugins-initialiser' ;
1113import Repository from './domain/repository' ;
@@ -16,10 +18,24 @@ import { create as createRouter } from './router';
1618
1719export { RegistryOptions } ;
1820
21+ export interface RegistryType < TApp = NativeApp < HttpServerAdapterFactory > > {
22+ close : ( callback : ( err ?: Error | undefined | string ) => void ) => void ;
23+ on : typeof eventsHandler . on ;
24+ register : < T = any > (
25+ plugin : Plugin < T > ,
26+ callback ?: ( ...args : any [ ] ) => void
27+ ) => void ;
28+ start : (
29+ callback : ( err : unknown , data ?: { app : TApp ; server : http . Server } ) => void
30+ ) => Promise < void > ;
31+ app : TApp ;
32+ }
33+
1934export default function registry <
2035 T = any ,
21- TServerAdapter extends HttpServerAdapterFactory = HttpServerAdapterFactory
22- > ( inputOptions : RegistryOptions < T , TServerAdapter > ) {
36+ TServerAdapter extends HttpServerAdapterFactory = HttpServerAdapterFactory ,
37+ TApp = NativeApp < TServerAdapter >
38+ > ( inputOptions : RegistryOptions < T , TServerAdapter > ) : RegistryType < TApp > {
2339 const validationResult =
2440 validator . validateRegistryConfiguration ( inputOptions ) ;
2541 if ( ! validationResult . isValid ) {
@@ -32,7 +48,7 @@ export default function registry<
3248 getHttpServerAdapter ( options . server . adapter , options . server . options ) ,
3349 options
3450 ) ;
35- const app = adapter . native ( ) as express . Express ;
51+ const app = adapter . native ( ) as TApp ;
3652 const repository = Repository ( options ) ;
3753
3854 const close = (
@@ -59,10 +75,7 @@ export default function registry<
5975 } ;
6076
6177 const start = async (
62- callback : (
63- err : unknown ,
64- data ?: { app : express . Express ; server : http . Server }
65- ) => void
78+ callback : ( err : unknown , data ?: { app : TApp ; server : http . Server } ) => void
6679 ) => {
6780 const ok = ( msg : string ) => console . log ( colors . green ( msg ) ) ;
6881
0 commit comments