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';
7 import { ApplicationProtocol
, ConfigurationSection
, type UIServerConfiguration
} from
'../../types';
8 import { Configuration
} from
'../../utils';
10 export class UIServerFactory
{
11 private constructor() {
12 // This is intentional
15 public static getUIServerImplementation(
16 uiServerConfiguration
?: UIServerConfiguration
,
17 ): AbstractUIServer
| null {
18 if (UIServerUtils
.isLoopback(uiServerConfiguration
!.options
!.host
!) === false) {
21 'Loopback address not detected in UI server configuration. This is not recommended.',
26 uiServerConfiguration
?.type ??
27 Configuration
.getConfigurationSection
<UIServerConfiguration
>(ConfigurationSection
.uiServer
)
30 case ApplicationProtocol
.WS
:
31 return new UIWebSocketServer(
32 uiServerConfiguration
??
33 Configuration
.getConfigurationSection
<UIServerConfiguration
>(
34 ConfigurationSection
.uiServer
,
37 case ApplicationProtocol
.HTTP
:
38 return new UIHttpServer(
39 uiServerConfiguration
??
40 Configuration
.getConfigurationSection
<UIServerConfiguration
>(
41 ConfigurationSection
.uiServer
,