1 import chalk from
'chalk';
3 import type { AbstractUIServer
} from
'./AbstractUIServer';
4 import { UIHttpServer
} from
'./UIHttpServer';
5 import { UIServerUtils
} from
'./UIServerUtils';
6 import { UIWebSocketServer
} from
'./UIWebSocketServer';
9 ApplicationProtocolVersion
,
10 type UIServerConfiguration
,
12 import { isUndefined
} from
'../../utils';
14 export class UIServerFactory
{
15 private constructor() {
16 // This is intentional
19 public static getUIServerImplementation(
20 uiServerConfiguration
: UIServerConfiguration
,
21 ): AbstractUIServer
| null {
22 if (UIServerUtils
.isLoopback(uiServerConfiguration
.options
!.host
!) === false) {
25 'Loopback address not detected in UI server configuration. This is not recommended.',
29 uiServerConfiguration
= {
30 ...(uiServerConfiguration
.type === ApplicationProtocol
.HTTP
&&
31 isUndefined(uiServerConfiguration
.version
) && {
32 version
: ApplicationProtocolVersion
.VERSION_11
,
34 ...uiServerConfiguration
,
36 switch (uiServerConfiguration
.type) {
37 case ApplicationProtocol
.WS
:
38 return new UIWebSocketServer(uiServerConfiguration
);
39 case ApplicationProtocol
.HTTP
:
40 return new UIHttpServer(uiServerConfiguration
);