1- import { serverAdapter } from '@palmares/server' ;
1+ import { AllServerSettingsType , ServerAdapter , serverAdapter , ServerRouterAdapter , ServerSettingsType } from '@palmares/server' ;
22import express , { type Express } from 'express' ;
33
44import { requestAdapter } from './request' ;
@@ -8,6 +8,7 @@ import { routerAdapter } from './router';
88import type { ServerSettingsTypeExpress } from './types' ;
99import type { Domain } from '@palmares/core' ;
1010import type multer from 'multer' ;
11+ import { ExpressRequestAdapter } from '.' ;
1112
1213export const servers = new Map <
1314 string ,
@@ -54,5 +55,50 @@ const expressServerAdapter = serverAdapter({
5455 }
5556} ) ;
5657
57- export { expressServerAdapter as ExpressServerAdapter } ;
58- export { expressServerAdapter as default } ;
58+ let defaultConfig = { } as ServerSettingsTypeExpress ;
59+
60+ class ExpressServerAdapter extends ServerAdapter {
61+ $$type = '$PServerAdapter' ;
62+ request = new requestAdapter ( ) ;
63+ response = new responseAdapter ( ) ;
64+ routers = new routerAdapter ( ) ;
65+
66+ // eslint-disable-next-line ts/require-await
67+ async load ( serverName : string , _domains : Domain [ ] , settings : ServerSettingsTypeExpress ) {
68+ let server : Express | undefined = servers . get ( serverName ) ?. server ;
69+ if ( ! server ) {
70+ server = express ( ) ;
71+ servers . set ( serverName , { server, settings } ) ;
72+ }
73+ if ( settings . customServerSettings ?. middlewares ) {
74+ settings . customServerSettings . middlewares . forEach ( ( middleware ) => {
75+ server . use ( middleware ) ;
76+ } ) ;
77+ }
78+ return server ;
79+ }
80+
81+ // eslint-disable-next-line ts/require-await
82+ static close ( serverName : string ) {
83+ servers . get ( serverName ) ?. httpServer ?. close ( ) ;
84+ servers . delete ( serverName ) ;
85+ }
86+
87+ // eslint-disable-next-line ts/require-await
88+ async start ( _serverName : string , server : Express , port : number , logServerStart : ( ) => void ) {
89+ server . listen ( port , ( ) => logServerStart ( ) ) ;
90+ }
91+
92+ static new ( args : Omit < ServerSettingsTypeExpress , 'server' > ) {
93+ defaultConfig = {
94+ server : this ,
95+ ...args ,
96+ } ;
97+
98+ return {
99+ server : this ,
100+ } ;
101+ }
102+ }
103+
104+ export { ExpressServerAdapter , expressServerAdapter } ;
0 commit comments