/**
 * 서버 팩토리 모듈
 *
 * 서버 타입에 따라 적절한 서버 인스턴스를 생성하는 팩토리 패턴 구현
 * 환경 변수 TRANSPORT_TYPE에 따라 stdio 또는 sse 서버를 생성합니다.
 */
import { StdioServer } from './servers/stdio-server.js';
import { SseServer } from './servers/sse-server.js';
/**
 * 서버 팩토리 인스턴스를 생성합니다
 * @returns ServerFactory 인스턴스
 */
export function createServerFactory() {
    return {
        createServer(type) {
            switch (type) {
                case 'stdio':
                    return new StdioServer();
                case 'sse':
                    return new SseServer();
                default:
                    throw new Error(`지원되지 않는 서버 타입: ${type}`);
            }
        },
        createServerFromEnv() {
            const transportType = process.env.TRANSPORT_TYPE;
            // 환경 변수가 설정되지 않은 경우 기본값 'stdio' 사용
            if (!transportType) {
                return new StdioServer();
            }
            // 환경 변수 값을 소문자로 변환하여 비교
            const normalizedType = transportType.toLowerCase();
            if (normalizedType !== 'stdio' && normalizedType !== 'sse') {
                throw new Error(`지원되지 않는 TRANSPORT_TYPE: ${transportType}. 'stdio' 또는 'sse'를 사용하세요.`);
            }
            return this.createServer(normalizedType);
        }
    };
}
//# sourceMappingURL=server-factory.js.map