-import chalk from 'chalk';
+import chalk from 'chalk'
-import type { AbstractUIServer } from './AbstractUIServer';
-import { UIHttpServer } from './UIHttpServer';
-import { UIServerUtils } from './UIServerUtils';
-import { UIWebSocketServer } from './UIWebSocketServer';
+import type { AbstractUIServer } from './AbstractUIServer.js'
+import { UIHttpServer } from './UIHttpServer.js'
+import { UIServerUtils } from './UIServerUtils.js'
+import { UIWebSocketServer } from './UIWebSocketServer.js'
import {
ApplicationProtocol,
ApplicationProtocolVersion,
- type UIServerConfiguration,
-} from '../../types';
-import { isUndefined } from '../../utils';
+ type UIServerConfiguration
+} from '../../types/index.js'
+// eslint-disable-next-line @typescript-eslint/no-extraneous-class
export class UIServerFactory {
- private constructor() {
+ private constructor () {
// This is intentional
}
- public static getUIServerImplementation(
- uiServerConfiguration: UIServerConfiguration,
- ): AbstractUIServer | null {
- if (UIServerUtils.isLoopback(uiServerConfiguration.options!.host!) === false) {
+ public static getUIServerImplementation (
+ uiServerConfiguration: UIServerConfiguration
+ ): AbstractUIServer | undefined {
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ if (!UIServerUtils.isLoopback(uiServerConfiguration.options!.host!)) {
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'
+ )
+ )
}
uiServerConfiguration = {
- ...(uiServerConfiguration.type === ApplicationProtocol.HTTP &&
- isUndefined(uiServerConfiguration.version) && {
- version: ApplicationProtocolVersion.VERSION_11,
- }),
- ...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);
+ return new UIWebSocketServer(uiServerConfiguration)
case ApplicationProtocol.HTTP:
- return new UIHttpServer(uiServerConfiguration);
- default:
- return null;
+ return new UIHttpServer(uiServerConfiguration)
}
}
}