Path: blob/main/client/connections/ConnectionFactory.ts
2605 views
import Log from '@secret-agent/commons/Logger';1import IConnectionToCoreOptions from '../interfaces/IConnectionToCoreOptions';2import ConnectionToCore from './ConnectionToCore';3import RemoteConnectionToCore from './RemoteConnectionToCore';45const { log } = Log(module);67export default class ConnectionFactory {8public static createLocalConnection?: (options: IConnectionToCoreOptions) => ConnectionToCore;910public static createConnection(11options: IConnectionToCoreOptions | ConnectionToCore,12): ConnectionToCore {13if (options instanceof ConnectionToCore) {14// NOTE: don't run connect on an instance15return options;16}1718let connection: ConnectionToCore;19if (options.host) {20connection = new RemoteConnectionToCore(options);21} else {22if (!this.createLocalConnection) {23throw new Error(24`You need to install the full "npm i secret-agent" installation to use local connections.2526If you meant to connect to a remote host, include the "host" parameter for your connection`,27);28}29connection = this.createLocalConnection(options);30}3132// eslint-disable-next-line @typescript-eslint/explicit-function-return-type33const onError = (error: Error) => {34if (error) {35log.error('Error connecting to core', {36error,37sessionId: null,38});39}40};4142connection.connect(true).then(onError).catch(onError);4344return connection;45}46}474849