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
,
13 export class UIServerFactory
{
14 private constructor() {
15 // This is intentional
18 public static getUIServerImplementation(
19 uiServerConfiguration
: UIServerConfiguration
,
20 ): AbstractUIServer
| null {
21 if (UIServerUtils
.isLoopback(uiServerConfiguration
.options
!.host
!) === false) {
24 'Loopback address not detected in UI server configuration. This is not recommended.',
28 uiServerConfiguration
= {
29 version
: ApplicationProtocolVersion
.VERSION_11
,
30 ...uiServerConfiguration
,
33 uiServerConfiguration
.type === ApplicationProtocol
.WS
&&
34 uiServerConfiguration
.version
!== ApplicationProtocolVersion
.VERSION_11
38 `Only version ${ApplicationProtocolVersion.VERSION_11} is supported for WebSocket UI server. Falling back to version ${ApplicationProtocolVersion.VERSION_11}.`,
41 uiServerConfiguration
.version
= ApplicationProtocolVersion
.VERSION_11
;
43 switch (uiServerConfiguration
.type) {
44 case ApplicationProtocol
.WS
:
45 return new UIWebSocketServer(uiServerConfiguration
);
46 case ApplicationProtocol
.HTTP
:
47 return new UIHttpServer(uiServerConfiguration
);