Commit | Line | Data |
---|---|---|
66a7748d | 1 | import chalk from 'chalk' |
8114d10e | 2 | |
66a7748d JB |
3 | import type { AbstractUIServer } from './AbstractUIServer.js' |
4 | import { UIHttpServer } from './UIHttpServer.js' | |
5 | import { UIServerUtils } from './UIServerUtils.js' | |
6 | import { UIWebSocketServer } from './UIWebSocketServer.js' | |
a6080904 JB |
7 | import { |
8 | ApplicationProtocol, | |
9 | ApplicationProtocolVersion, | |
66a7748d JB |
10 | type UIServerConfiguration |
11 | } from '../../types/index.js' | |
fe94fce0 | 12 | |
66a7748d | 13 | // eslint-disable-next-line @typescript-eslint/no-extraneous-class |
268a74bb | 14 | export class UIServerFactory { |
66a7748d | 15 | private constructor () { |
fe94fce0 JB |
16 | // This is intentional |
17 | } | |
18 | ||
66a7748d JB |
19 | public static getUIServerImplementation ( |
20 | uiServerConfiguration: UIServerConfiguration | |
6d2b7d01 | 21 | ): AbstractUIServer | undefined { |
66a7748d JB |
22 | // eslint-disable-next-line @typescript-eslint/no-non-null-assertion |
23 | if (!UIServerUtils.isLoopback(uiServerConfiguration.options!.host!)) { | |
d5bd1c00 | 24 | console.warn( |
9c5d9fa4 | 25 | chalk.yellow( |
66a7748d JB |
26 | 'Loopback address not detected in UI server configuration. This is not recommended.' |
27 | ) | |
28 | ) | |
d5bd1c00 | 29 | } |
a6080904 | 30 | uiServerConfiguration = { |
7aba23e1 | 31 | version: ApplicationProtocolVersion.VERSION_11, |
66a7748d JB |
32 | ...uiServerConfiguration |
33 | } | |
7aba23e1 JB |
34 | if ( |
35 | uiServerConfiguration.type === ApplicationProtocol.WS && | |
36 | uiServerConfiguration.version !== ApplicationProtocolVersion.VERSION_11 | |
37 | ) { | |
38 | console.warn( | |
39 | chalk.yellow( | |
66a7748d JB |
40 | `Only version ${ApplicationProtocolVersion.VERSION_11} is supported for WebSocket UI server. Falling back to version ${ApplicationProtocolVersion.VERSION_11}.` |
41 | ) | |
42 | ) | |
43 | uiServerConfiguration.version = ApplicationProtocolVersion.VERSION_11 | |
7aba23e1 | 44 | } |
864e5f8d | 45 | switch (uiServerConfiguration.type) { |
fe94fce0 | 46 | case ApplicationProtocol.WS: |
66a7748d | 47 | return new UIWebSocketServer(uiServerConfiguration) |
1f7fa4de | 48 | case ApplicationProtocol.HTTP: |
66a7748d | 49 | return new UIHttpServer(uiServerConfiguration) |
fe94fce0 JB |
50 | } |
51 | } | |
52 | } |