import { UIHttpServer } from './UIHttpServer';
import { UIServerUtils } from './UIServerUtils';
import { UIWebSocketServer } from './UIWebSocketServer';
-import { ApplicationProtocol, type UIServerConfiguration } from '../../types';
-import { Configuration } from '../../utils';
+import {
+ ApplicationProtocol,
+ ApplicationProtocolVersion,
+ type UIServerConfiguration,
+} from '../../types';
export class UIServerFactory {
private constructor() {
}
public static getUIServerImplementation(
- uiServerConfiguration?: UIServerConfiguration
+ uiServerConfiguration: UIServerConfiguration,
): AbstractUIServer | null {
- if (UIServerUtils.isLoopback(uiServerConfiguration.options?.host) === false) {
+ if (UIServerUtils.isLoopback(uiServerConfiguration.options!.host!) === false) {
console.warn(
chalk.yellow(
- 'Loopback address not detected in UI server configuration. This is not recommended.'
- )
+ 'Loopback address not detected in UI server configuration. This is not recommended.',
+ ),
);
}
- switch (uiServerConfiguration?.type ?? Configuration.getUIServer().type) {
+ uiServerConfiguration = {
+ version: ApplicationProtocolVersion.VERSION_11,
+ ...uiServerConfiguration,
+ };
+ if (
+ uiServerConfiguration.type === ApplicationProtocol.WS &&
+ uiServerConfiguration.version !== ApplicationProtocolVersion.VERSION_11
+ ) {
+ console.warn(
+ chalk.yellow(
+ `Only version ${ApplicationProtocolVersion.VERSION_11} is supported for WebSocket UI server. Falling back to version ${ApplicationProtocolVersion.VERSION_11}.`,
+ ),
+ );
+ uiServerConfiguration.version = ApplicationProtocolVersion.VERSION_11;
+ }
+ switch (uiServerConfiguration.type) {
case ApplicationProtocol.WS:
- return new UIWebSocketServer(uiServerConfiguration ?? Configuration.getUIServer());
+ return new UIWebSocketServer(uiServerConfiguration);
case ApplicationProtocol.HTTP:
- return new UIHttpServer(uiServerConfiguration ?? Configuration.getUIServer());
+ return new UIHttpServer(uiServerConfiguration);
default:
return null;
}