{"version":3,"file":"plugin.mjs","sources":["esm/index.js","esm/web/utils.js","esm/web/http.js","esm/web/stream.js","esm/web/sse.js","esm/web/websocket.js","esm/web/interceptor.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst CorsBypass = registerPlugin('CorsBypass', {\n    web: () => import('./web').then(m => new m.CorsBypassWeb()),\n});\nexport * from './definitions';\nexport { CorsBypass };\n","/**\n * Check if a URL is cross-origin\n */\nexport function isCrossOrigin(url) {\n    try {\n        const targetUrl = new URL(url);\n        const currentUrl = new URL(window.location.href);\n        return targetUrl.origin !== currentUrl.origin;\n    }\n    catch {\n        return false;\n    }\n}\n/**\n * Create interceptor context\n */\nexport function createInterceptorContext() {\n    return {\n        startTime: Date.now(),\n        requestId: `req_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n        retryCount: 0,\n        data: {},\n    };\n}\n/**\n * Utils Manager\n * Provides utility functions for the web plugin\n */\nexport class UtilsManager {\n    /**\n     * Check if a URL is cross-origin\n     */\n    isCrossOrigin(url) {\n        return isCrossOrigin(url);\n    }\n    /**\n     * Create interceptor context\n     */\n    createInterceptorContext() {\n        return createInterceptorContext();\n    }\n}\n","import { isCrossOrigin, createInterceptorContext } from './utils';\n/**\n * HTTP Request Manager\n * Handles all HTTP requests with CORS bypass and interceptor support\n */\nexport class HttpManager {\n    constructor(proxyServerUrl) {\n        this.proxyServerUrl = proxyServerUrl;\n    }\n    /**\n     * Set custom proxy server URL\n     */\n    setProxyServer(url) {\n        this.proxyServerUrl = url;\n        console.log(`🔧 Proxy server set to: ${url}`);\n    }\n    /**\n     * Make an HTTP request with CORS bypass and interceptor support\n     */\n    async request(options, interceptors) {\n        const context = createInterceptorContext();\n        try {\n            // Execute request interceptors\n            let modifiedOptions = await this.executeRequestInterceptors(options, context, interceptors);\n            const { url, method = 'GET', headers = {}, data, params, timeout = 30000, responseType = 'json', followRedirects = true, } = modifiedOptions;\n            // Build URL with query parameters\n            let requestUrl = url;\n            if (params) {\n                const urlParams = new URLSearchParams(params);\n                requestUrl += (url.includes('?') ? '&' : '?') + urlParams.toString();\n            }\n            // Use proxy server if available and URL is cross-origin\n            let finalUrl = requestUrl;\n            let fetchOptions = {\n                method,\n                headers,\n                redirect: followRedirects ? 'follow' : 'manual',\n            };\n            if (this.proxyServerUrl && isCrossOrigin(requestUrl)) {\n                console.log(`🔧 Using proxy server for: ${requestUrl}`);\n                finalUrl = `${this.proxyServerUrl}/proxy/${encodeURIComponent(requestUrl)}`;\n            }\n            // Create AbortController for timeout\n            const controller = new AbortController();\n            const timeoutId = setTimeout(() => controller.abort(), timeout);\n            fetchOptions.signal = controller.signal;\n            try {\n                // Add body for methods that support it\n                if (data && ['POST', 'PUT', 'PATCH'].includes(method)) {\n                    if (typeof data === 'string') {\n                        fetchOptions.body = data;\n                    }\n                    else {\n                        fetchOptions.body = JSON.stringify(data);\n                        if (!headers['Content-Type']) {\n                            headers['Content-Type'] = 'application/json';\n                        }\n                    }\n                }\n                const response = await fetch(finalUrl, fetchOptions);\n                clearTimeout(timeoutId);\n                // Parse response based on responseType\n                let responseData;\n                switch (responseType) {\n                    case 'text':\n                        responseData = await response.text();\n                        break;\n                    case 'blob':\n                        responseData = await response.blob();\n                        break;\n                    case 'arraybuffer':\n                        responseData = await response.arrayBuffer();\n                        break;\n                    case 'json':\n                    default:\n                        try {\n                            responseData = await response.json();\n                        }\n                        catch {\n                            responseData = await response.text();\n                        }\n                        break;\n                }\n                // Convert Headers to plain object\n                const responseHeaders = {};\n                response.headers.forEach((value, key) => {\n                    responseHeaders[key] = value;\n                });\n                let httpResponse = {\n                    status: response.status,\n                    statusText: response.statusText,\n                    headers: responseHeaders,\n                    data: responseData,\n                    url: response.url,\n                };\n                // Execute response interceptors\n                httpResponse = await this.executeResponseInterceptors(httpResponse, context, interceptors);\n                return httpResponse;\n            }\n            catch (error) {\n                clearTimeout(timeoutId);\n                // Create HTTP error\n                const httpError = {\n                    message: error instanceof Error ? error.message : 'Unknown error',\n                    config: modifiedOptions,\n                    originalError: error,\n                };\n                // Try error interceptors\n                const interceptorResult = await this.executeErrorInterceptors(httpError, context, interceptors);\n                if (interceptorResult) {\n                    return interceptorResult;\n                }\n                // If proxy failed and we have a proxy server, try direct request as fallback\n                if (this.proxyServerUrl && finalUrl.includes(this.proxyServerUrl)) {\n                    console.warn(`⚠️ Proxy request failed, trying direct request: ${error}`);\n                    return this.request({ ...options, url: requestUrl }, interceptors);\n                }\n                throw httpError;\n            }\n        }\n        catch (error) {\n            // Handle errors from interceptors or other sources\n            if (error.config) {\n                // Already an HttpError\n                throw error;\n            }\n            // Create HTTP error\n            const httpError = {\n                message: error instanceof Error ? error.message : 'Unknown error',\n                config: options,\n                originalError: error,\n            };\n            throw httpError;\n        }\n    }\n    /**\n     * Make a GET request\n     */\n    async get(options, interceptors) {\n        return this.request({ ...options, method: 'GET' }, interceptors);\n    }\n    /**\n     * Make a POST request\n     */\n    async post(options, interceptors) {\n        return this.request({ ...options, method: 'POST' }, interceptors);\n    }\n    /**\n     * Make a PUT request\n     */\n    async put(options, interceptors) {\n        return this.request({ ...options, method: 'PUT' }, interceptors);\n    }\n    /**\n     * Make a PATCH request\n     */\n    async patch(options, interceptors) {\n        return this.request({ ...options, method: 'PATCH' }, interceptors);\n    }\n    /**\n     * Make a DELETE request\n     */\n    async delete(options, interceptors) {\n        return this.request({ ...options, method: 'DELETE' }, interceptors);\n    }\n    /**\n     * Execute request interceptors\n     */\n    async executeRequestInterceptors(config, context, interceptors) {\n        let modifiedConfig = { ...config };\n        for (const entry of interceptors) {\n            if (!entry.enabled || !entry.interceptor.onRequest) {\n                continue;\n            }\n            // Check scope if defined\n            if (entry.options.scope) {\n                const { urlPattern, methods } = entry.options.scope;\n                if (urlPattern && !new RegExp(urlPattern).test(modifiedConfig.url)) {\n                    continue;\n                }\n                if (methods && modifiedConfig.method && !methods.includes(modifiedConfig.method)) {\n                    continue;\n                }\n            }\n            try {\n                modifiedConfig = await Promise.resolve(entry.interceptor.onRequest(modifiedConfig));\n            }\n            catch (error) {\n                console.error(`[Interceptor ${entry.id}] Request interceptor error:`, error);\n                throw error;\n            }\n        }\n        return modifiedConfig;\n    }\n    /**\n     * Execute response interceptors\n     */\n    async executeResponseInterceptors(response, context, interceptors) {\n        let modifiedResponse = { ...response };\n        for (const entry of interceptors) {\n            if (!entry.enabled || !entry.interceptor.onResponse) {\n                continue;\n            }\n            try {\n                modifiedResponse = await Promise.resolve(entry.interceptor.onResponse(modifiedResponse));\n            }\n            catch (error) {\n                console.error(`[Interceptor ${entry.id}] Response interceptor error:`, error);\n                throw error;\n            }\n        }\n        return modifiedResponse;\n    }\n    /**\n     * Execute error interceptors\n     */\n    async executeErrorInterceptors(error, context, interceptors) {\n        for (const entry of interceptors) {\n            if (!entry.enabled || !entry.interceptor.onError) {\n                continue;\n            }\n            try {\n                const result = await Promise.resolve(entry.interceptor.onError(error));\n                if (result) {\n                    // Interceptor returned a response, use it\n                    return result;\n                }\n            }\n            catch (interceptorError) {\n                console.error(`[Interceptor ${entry.id}] Error interceptor error:`, interceptorError);\n                // Continue to next interceptor\n            }\n        }\n        // No interceptor handled the error, return void\n        return;\n    }\n}\n","import { isCrossOrigin } from './utils';\n/**\n * Stream Manager\n * Handles streaming HTTP requests with CORS bypass\n */\nexport class StreamManager {\n    constructor(proxyServerUrl, notifyListeners) {\n        this.streamControllers = new Map();\n        this.streamCounter = 0;\n        this.proxyServerUrl = proxyServerUrl;\n        this.notifyListeners = notifyListeners;\n    }\n    /**\n     * Make a streaming HTTP request - supports AI model streaming output\n     */\n    async streamRequest(options) {\n        const streamId = `stream_${++this.streamCounter}`;\n        const { url, method = 'POST', headers = {}, data, params, timeout = 60000, followRedirects = true, } = options;\n        // Build URL with query parameters\n        let requestUrl = url;\n        if (params) {\n            const urlParams = new URLSearchParams(params);\n            requestUrl += (url.includes('?') ? '&' : '?') + urlParams.toString();\n        }\n        // Use proxy server if available and URL is cross-origin\n        let finalUrl = requestUrl;\n        if (this.proxyServerUrl && isCrossOrigin(requestUrl)) {\n            console.log(`🔧 Using proxy server for streaming: ${requestUrl}`);\n            finalUrl = `${this.proxyServerUrl}/proxy/${encodeURIComponent(requestUrl)}`;\n        }\n        // Create AbortController for this stream\n        const controller = new AbortController();\n        this.streamControllers.set(streamId, controller);\n        // Set timeout\n        const timeoutId = setTimeout(() => {\n            controller.abort();\n            this.notifyListeners('streamStatus', {\n                streamId,\n                status: 'error',\n                error: 'Request timeout',\n            });\n        }, timeout);\n        try {\n            // Prepare fetch options\n            const fetchOptions = {\n                method,\n                headers: {\n                    ...headers,\n                    'Accept': 'text/event-stream, application/json, text/plain, */*',\n                },\n                signal: controller.signal,\n                redirect: followRedirects ? 'follow' : 'manual',\n            };\n            // Add body for methods that support it\n            if (data && ['POST', 'PUT', 'PATCH'].includes(method)) {\n                if (typeof data === 'string') {\n                    fetchOptions.body = data;\n                }\n                else {\n                    fetchOptions.body = JSON.stringify(data);\n                    if (!headers['Content-Type']) {\n                        fetchOptions.headers = {\n                            ...fetchOptions.headers,\n                            'Content-Type': 'application/json',\n                        };\n                    }\n                }\n            }\n            console.log(`🌊 Starting stream request: ${streamId} to ${finalUrl}`);\n            // Start the fetch request\n            fetch(finalUrl, fetchOptions)\n                .then(async (response) => {\n                clearTimeout(timeoutId);\n                if (!response.ok) {\n                    throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n                }\n                // Convert headers to plain object\n                const responseHeaders = {};\n                response.headers.forEach((value, key) => {\n                    responseHeaders[key] = value;\n                });\n                // Notify stream started\n                this.notifyListeners('streamStatus', {\n                    streamId,\n                    status: 'started',\n                    statusCode: response.status,\n                    headers: responseHeaders,\n                });\n                // Read the stream\n                const reader = response.body?.getReader();\n                const decoder = new TextDecoder();\n                if (!reader) {\n                    throw new Error('Response body is not readable');\n                }\n                try {\n                    while (true) {\n                        const { done, value } = await reader.read();\n                        if (done) {\n                            // Stream completed\n                            this.notifyListeners('streamChunk', {\n                                streamId,\n                                data: '',\n                                done: true,\n                            });\n                            this.notifyListeners('streamStatus', {\n                                streamId,\n                                status: 'completed',\n                            });\n                            this.streamControllers.delete(streamId);\n                            break;\n                        }\n                        // Decode and send chunk\n                        const chunk = decoder.decode(value, { stream: true });\n                        this.notifyListeners('streamChunk', {\n                            streamId,\n                            data: chunk,\n                            done: false,\n                        });\n                    }\n                }\n                catch (error) {\n                    if (error.name === 'AbortError') {\n                        this.notifyListeners('streamStatus', {\n                            streamId,\n                            status: 'cancelled',\n                        });\n                    }\n                    else {\n                        throw error;\n                    }\n                }\n            })\n                .catch((error) => {\n                clearTimeout(timeoutId);\n                const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n                this.notifyListeners('streamChunk', {\n                    streamId,\n                    data: '',\n                    done: true,\n                    error: errorMessage,\n                });\n                this.notifyListeners('streamStatus', {\n                    streamId,\n                    status: 'error',\n                    error: errorMessage,\n                });\n                this.streamControllers.delete(streamId);\n            });\n            return { streamId };\n        }\n        catch (error) {\n            clearTimeout(timeoutId);\n            this.streamControllers.delete(streamId);\n            throw error;\n        }\n    }\n    /**\n     * Cancel a streaming request\n     */\n    async cancelStream(options) {\n        const { streamId } = options;\n        const controller = this.streamControllers.get(streamId);\n        if (controller) {\n            controller.abort();\n            this.streamControllers.delete(streamId);\n            this.notifyListeners('streamStatus', {\n                streamId,\n                status: 'cancelled',\n            });\n        }\n    }\n    /**\n     * Get all active stream controllers\n     */\n    getStreamControllers() {\n        return this.streamControllers;\n    }\n}\n","import { isCrossOrigin } from './utils';\n/**\n * SSE Manager\n * Handles Server-Sent Events connections with CORS bypass\n */\nexport class SSEManager {\n    constructor(proxyServerUrl, notifyListeners) {\n        this.sseConnections = new Map();\n        this.connectionCounter = 0;\n        this.proxyServerUrl = proxyServerUrl;\n        this.notifyListeners = notifyListeners;\n    }\n    /**\n     * Start listening to Server-Sent Events (legacy method)\n     */\n    async startSSE(options) {\n        const connectionId = `sse_${++this.connectionCounter}`;\n        const { url, headers = {}, withCredentials = false, reconnectTimeout = 3000 } = options;\n        // Use proxy server for SSE if available and cross-origin\n        let sseUrl = url;\n        if (this.proxyServerUrl && isCrossOrigin(url)) {\n            console.log(`🔧 Using SSE proxy for: ${url}`);\n            sseUrl = `${this.proxyServerUrl}/sse-proxy/${encodeURIComponent(url)}`;\n        }\n        const eventSource = new EventSource(sseUrl);\n        this.sseConnections.set(connectionId, eventSource);\n        eventSource.onopen = () => {\n            this.notifyListeners('sseOpen', {\n                connectionId,\n                status: 'connected',\n            });\n        };\n        eventSource.onmessage = (event) => {\n            this.notifyListeners('sseMessage', {\n                connectionId,\n                type: 'message',\n                data: event.data,\n                id: event.lastEventId,\n            });\n        };\n        eventSource.onerror = () => {\n            this.notifyListeners('sseError', {\n                connectionId,\n                error: 'Connection error',\n            });\n        };\n        return { connectionId };\n    }\n    /**\n     * Stop listening to Server-Sent Events\n     */\n    async stopSSE(options) {\n        const { connectionId } = options;\n        const connection = this.sseConnections.get(connectionId);\n        if (connection) {\n            connection.close();\n            this.sseConnections.delete(connectionId);\n            this.notifyListeners('sseClose', {\n                connectionId,\n                status: 'disconnected',\n            });\n        }\n    }\n    /**\n     * Create a Server-Sent Events connection with reconnection support\n     */\n    async createSSEConnection(options) {\n        const connectionId = `sse_${++this.connectionCounter}`;\n        const { url, headers = {}, reconnect = {} } = options;\n        const { enabled: reconnectEnabled = true, initialDelay = 1000, maxDelay = 30000, maxAttempts = 10, } = reconnect;\n        let retryCount = 0;\n        let retryDelay = initialDelay;\n        const createConnection = () => {\n            // Use proxy server for SSE if available and cross-origin\n            let sseUrl = url;\n            if (this.proxyServerUrl && isCrossOrigin(url)) {\n                console.log(`🔧 Using SSE proxy for: ${url}`);\n                sseUrl = `${this.proxyServerUrl}/sse-proxy/${encodeURIComponent(url)}`;\n            }\n            const eventSource = new EventSource(sseUrl);\n            this.sseConnections.set(connectionId, eventSource);\n            eventSource.onopen = () => {\n                retryCount = 0;\n                retryDelay = initialDelay;\n                this.notifyListeners('sseConnectionChange', {\n                    connectionId,\n                    status: 'connected',\n                });\n            };\n            eventSource.onmessage = (event) => {\n                this.notifyListeners('sseMessage', {\n                    connectionId,\n                    type: 'message',\n                    data: event.data,\n                    id: event.lastEventId,\n                });\n            };\n            eventSource.onerror = () => {\n                this.notifyListeners('sseConnectionChange', {\n                    connectionId,\n                    status: 'error',\n                    error: 'Connection error',\n                });\n                if (reconnectEnabled && retryCount < maxAttempts) {\n                    setTimeout(() => {\n                        retryCount++;\n                        retryDelay = Math.min(retryDelay * 2, maxDelay);\n                        eventSource.close();\n                        createConnection();\n                    }, retryDelay);\n                }\n                else {\n                    this.sseConnections.delete(connectionId);\n                }\n            };\n            // Add custom event listeners\n            eventSource.addEventListener('error', (event) => {\n                this.notifyListeners('sseMessage', {\n                    connectionId,\n                    type: 'error',\n                    data: 'Connection error',\n                });\n            });\n        };\n        this.notifyListeners('sseConnectionChange', {\n            connectionId,\n            status: 'connecting',\n        });\n        createConnection();\n        return {\n            connectionId,\n            status: 'connecting',\n        };\n    }\n    /**\n     * Close an SSE connection\n     */\n    async closeSSEConnection(options) {\n        const { connectionId } = options;\n        const connection = this.sseConnections.get(connectionId);\n        if (connection) {\n            connection.close();\n            this.sseConnections.delete(connectionId);\n            this.notifyListeners('sseConnectionChange', {\n                connectionId,\n                status: 'disconnected',\n            });\n        }\n    }\n    /**\n     * Get all active SSE connections\n     */\n    getSSEConnections() {\n        return this.sseConnections;\n    }\n}\n","/**\n * WebSocket Manager\n * Handles WebSocket connections with CORS bypass\n */\nexport class WebSocketManager {\n    constructor(notifyListeners) {\n        this.wsConnections = new Map();\n        this.connectionCounter = 0;\n        this.notifyListeners = notifyListeners;\n    }\n    /**\n     * Create a WebSocket connection\n     */\n    async createWebSocketConnection(options) {\n        const connectionId = `ws_${++this.connectionCounter}`;\n        const { url, protocols, headers, timeout = 10000 } = options;\n        return new Promise((resolve, reject) => {\n            const ws = new WebSocket(url, protocols);\n            this.wsConnections.set(connectionId, ws);\n            const timeoutId = setTimeout(() => {\n                ws.close();\n                this.wsConnections.delete(connectionId);\n                reject(new Error('WebSocket connection timeout'));\n            }, timeout);\n            ws.onopen = () => {\n                clearTimeout(timeoutId);\n                this.notifyListeners('webSocketConnectionChange', {\n                    connectionId,\n                    status: 'connected',\n                });\n                resolve({\n                    connectionId,\n                    status: 'connected',\n                });\n            };\n            ws.onmessage = (event) => {\n                this.notifyListeners('webSocketMessage', {\n                    connectionId,\n                    data: event.data,\n                    type: typeof event.data === 'string' ? 'text' : 'binary',\n                });\n            };\n            ws.onerror = () => {\n                clearTimeout(timeoutId);\n                this.notifyListeners('webSocketConnectionChange', {\n                    connectionId,\n                    status: 'error',\n                    error: 'WebSocket connection error',\n                });\n            };\n            ws.onclose = () => {\n                this.wsConnections.delete(connectionId);\n                this.notifyListeners('webSocketConnectionChange', {\n                    connectionId,\n                    status: 'disconnected',\n                });\n            };\n            this.notifyListeners('webSocketConnectionChange', {\n                connectionId,\n                status: 'connecting',\n            });\n        });\n    }\n    /**\n     * Close a WebSocket connection\n     */\n    async closeWebSocketConnection(options) {\n        const { connectionId } = options;\n        const connection = this.wsConnections.get(connectionId);\n        if (connection) {\n            connection.close();\n            this.wsConnections.delete(connectionId);\n        }\n    }\n    /**\n     * Send data through WebSocket\n     */\n    async sendWebSocketMessage(options) {\n        const { connectionId, message } = options;\n        const connection = this.wsConnections.get(connectionId);\n        if (connection && connection.readyState === WebSocket.OPEN) {\n            connection.send(message);\n        }\n        else {\n            throw new Error('WebSocket connection not found or not open');\n        }\n    }\n    /**\n     * Get all active WebSocket connections\n     */\n    getWebSocketConnections() {\n        return this.wsConnections;\n    }\n}\n","import { createInterceptorContext } from './utils';\n/**\n * Interceptor Manager\n * Handles request/response interceptors with priority and scope support\n */\nexport class InterceptorManager {\n    constructor() {\n        this.interceptors = [];\n        this.interceptorCounter = 0;\n    }\n    /**\n     * Add an interceptor to the request/response chain\n     */\n    async addInterceptor(interceptor, options) {\n        const id = `interceptor_${++this.interceptorCounter}`;\n        const interceptorEntry = {\n            id,\n            interceptor,\n            options: options || {},\n            enabled: options?.enabled !== false,\n        };\n        this.interceptors.push(interceptorEntry);\n        // Sort by priority (higher priority first)\n        this.interceptors.sort((a, b) => {\n            const priorityA = a.options.priority || 0;\n            const priorityB = b.options.priority || 0;\n            return priorityB - priorityA;\n        });\n        const handle = {\n            id,\n            name: options?.name,\n            remove: () => {\n                this.removeInterceptor(id);\n            },\n            enable: () => {\n                const entry = this.interceptors.find(i => i.id === id);\n                if (entry)\n                    entry.enabled = true;\n            },\n            disable: () => {\n                const entry = this.interceptors.find(i => i.id === id);\n                if (entry)\n                    entry.enabled = false;\n            },\n            isEnabled: () => {\n                const entry = this.interceptors.find(i => i.id === id);\n                return entry ? entry.enabled : false;\n            },\n        };\n        return handle;\n    }\n    /**\n     * Remove an interceptor by handle or ID\n     */\n    async removeInterceptor(handle) {\n        const id = typeof handle === 'string' ? handle : handle.id;\n        const index = this.interceptors.findIndex(i => i.id === id);\n        if (index !== -1) {\n            this.interceptors.splice(index, 1);\n        }\n    }\n    /**\n     * Remove all interceptors\n     */\n    async removeAllInterceptors() {\n        this.interceptors = [];\n    }\n    /**\n     * Get all registered interceptors\n     */\n    async getInterceptors() {\n        return this.interceptors.map(entry => ({\n            id: entry.id,\n            name: entry.options.name,\n            remove: () => this.removeInterceptor(entry.id),\n            enable: () => {\n                entry.enabled = true;\n            },\n            disable: () => {\n                entry.enabled = false;\n            },\n            isEnabled: () => entry.enabled,\n        }));\n    }\n    /**\n     * Execute request interceptors\n     */\n    async executeRequestInterceptors(config) {\n        const context = createInterceptorContext();\n        let modifiedConfig = { ...config };\n        for (const entry of this.interceptors) {\n            if (!entry.enabled || !entry.interceptor.onRequest) {\n                continue;\n            }\n            // Check scope if defined\n            if (entry.options.scope) {\n                const { urlPattern, methods } = entry.options.scope;\n                if (urlPattern && !new RegExp(urlPattern).test(modifiedConfig.url)) {\n                    continue;\n                }\n                if (methods && modifiedConfig.method && !methods.includes(modifiedConfig.method)) {\n                    continue;\n                }\n            }\n            try {\n                modifiedConfig = await Promise.resolve(entry.interceptor.onRequest(modifiedConfig));\n            }\n            catch (error) {\n                console.error(`[Interceptor ${entry.id}] Request interceptor error:`, error);\n                throw error;\n            }\n        }\n        return modifiedConfig;\n    }\n    /**\n     * Execute response interceptors\n     */\n    async executeResponseInterceptors(response) {\n        const context = createInterceptorContext();\n        let modifiedResponse = { ...response };\n        for (const entry of this.interceptors) {\n            if (!entry.enabled || !entry.interceptor.onResponse) {\n                continue;\n            }\n            try {\n                modifiedResponse = await Promise.resolve(entry.interceptor.onResponse(modifiedResponse));\n            }\n            catch (error) {\n                console.error(`[Interceptor ${entry.id}] Response interceptor error:`, error);\n                throw error;\n            }\n        }\n        return modifiedResponse;\n    }\n    /**\n     * Execute error interceptors\n     */\n    async executeErrorInterceptors(error) {\n        const context = createInterceptorContext();\n        for (const entry of this.interceptors) {\n            if (!entry.enabled || !entry.interceptor.onError) {\n                continue;\n            }\n            try {\n                const result = await Promise.resolve(entry.interceptor.onError(error));\n                if (result) {\n                    // Interceptor returned a response, use it\n                    return result;\n                }\n            }\n            catch (interceptorError) {\n                console.error(`[Interceptor ${entry.id}] Error interceptor error:`, interceptorError);\n                // Continue to next interceptor\n            }\n        }\n        // No interceptor handled the error, return void\n        return;\n    }\n    /**\n     * Get all interceptors (internal format)\n     */\n    getInterceptorsInternal() {\n        return this.interceptors;\n    }\n}\n","import { WebPlugin } from '@capacitor/core';\n// MCP SDK imports (ESM)\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\n// Import modular managers\nimport { UtilsManager } from './web/utils';\nimport { HttpManager } from './web/http';\nimport { StreamManager } from './web/stream';\nimport { SSEManager } from './web/sse';\nimport { WebSocketManager } from './web/websocket';\nimport { InterceptorManager } from './web/interceptor';\nexport class CorsBypassWeb extends WebPlugin {\n    constructor() {\n        super();\n        this.proxyServerUrl = null;\n        this.globalProxyConfig = null;\n        this.proxyRequestCount = 0;\n        this.proxyLastSuccessTime = null;\n        this.proxyLastError = null;\n        // MCP specific\n        this.mcpClients = new Map();\n        this.mcpTransports = new Map();\n        this.connectionCounter = 0;\n        // Initialize managers\n        this.utilsManager = new UtilsManager();\n        this.httpManager = new HttpManager(this.proxyServerUrl);\n        this.streamManager = new StreamManager(this.proxyServerUrl, this.notifyListeners.bind(this));\n        this.sseManager = new SSEManager(this.proxyServerUrl, this.notifyListeners.bind(this));\n        this.wsManager = new WebSocketManager(this.notifyListeners.bind(this));\n        this.interceptorManager = new InterceptorManager();\n        // Try to detect if a proxy server is available\n        this.detectProxyServer();\n    }\n    async detectProxyServer() {\n        const possibleUrls = [\n            'http://localhost:3002',\n            'http://127.0.0.1:3002',\n            'http://localhost:3001',\n            'http://127.0.0.1:3001',\n            'http://localhost:8080',\n            'http://127.0.0.1:8080'\n        ];\n        for (const url of possibleUrls) {\n            try {\n                const controller = new AbortController();\n                const timeoutId = setTimeout(() => controller.abort(), 1000);\n                const response = await fetch(`${url}/health`, {\n                    method: 'GET',\n                    signal: controller.signal\n                });\n                clearTimeout(timeoutId);\n                if (response.ok) {\n                    this.proxyServerUrl = url;\n                    this.httpManager.setProxyServer(url);\n                    this.streamManager = new StreamManager(this.proxyServerUrl, this.notifyListeners.bind(this));\n                    this.sseManager = new SSEManager(this.proxyServerUrl, this.notifyListeners.bind(this));\n                    console.log(`🔧 CORS Proxy server detected at: ${url}`);\n                    break;\n                }\n            }\n            catch (error) {\n                // Ignore errors, continue checking\n            }\n        }\n        if (!this.proxyServerUrl) {\n            console.warn('⚠️ No CORS proxy server detected. Some requests may fail due to CORS.');\n            console.log('💡 To enable full functionality, run: node web-proxy-server.js');\n        }\n    }\n    /**\n     * Set custom proxy server URL\n     */\n    setProxyServer(url) {\n        this.proxyServerUrl = url;\n        this.httpManager.setProxyServer(url);\n        this.streamManager = new StreamManager(this.proxyServerUrl, this.notifyListeners.bind(this));\n        this.sseManager = new SSEManager(this.proxyServerUrl, this.notifyListeners.bind(this));\n        console.log(`🔧 Proxy server set to: ${url}`);\n    }\n    async request(options) {\n        const interceptors = this.interceptorManager.getInterceptorsInternal();\n        return this.httpManager.request(options, interceptors);\n    }\n    async get(options) {\n        const interceptors = this.interceptorManager.getInterceptorsInternal();\n        return this.httpManager.get(options, interceptors);\n    }\n    async post(options) {\n        const interceptors = this.interceptorManager.getInterceptorsInternal();\n        return this.httpManager.post(options, interceptors);\n    }\n    async put(options) {\n        const interceptors = this.interceptorManager.getInterceptorsInternal();\n        return this.httpManager.put(options, interceptors);\n    }\n    async patch(options) {\n        const interceptors = this.interceptorManager.getInterceptorsInternal();\n        return this.httpManager.patch(options, interceptors);\n    }\n    async delete(options) {\n        const interceptors = this.interceptorManager.getInterceptorsInternal();\n        return this.httpManager.delete(options, interceptors);\n    }\n    /**\n     * Streaming HTTP request - supports AI model streaming output\n     */\n    async streamRequest(options) {\n        return this.streamManager.streamRequest(options);\n    }\n    /**\n     * Cancel streaming request\n     */\n    async cancelStream(options) {\n        return this.streamManager.cancelStream(options);\n    }\n    async startSSE(options) {\n        return this.sseManager.startSSE(options);\n    }\n    async stopSSE(options) {\n        return this.sseManager.stopSSE(options);\n    }\n    async createSSEConnection(options) {\n        return this.sseManager.createSSEConnection(options);\n    }\n    async closeSSEConnection(options) {\n        return this.sseManager.closeSSEConnection(options);\n    }\n    async createWebSocketConnection(options) {\n        return this.wsManager.createWebSocketConnection(options);\n    }\n    async closeWebSocketConnection(options) {\n        return this.wsManager.closeWebSocketConnection(options);\n    }\n    async sendWebSocketMessage(options) {\n        return this.wsManager.sendWebSocketMessage(options);\n    }\n    // ===== MCP Protocol Methods =====\n    async createMCPClient(options) {\n        const connectionId = `mcp_${++this.connectionCounter}`;\n        try {\n            // Determine transport type and URL\n            const transport = options.transport || 'streamablehttp';\n            // Get URL (support both new and legacy config)\n            let url = options.url;\n            if (!url && options.sseUrl) {\n                // Backward compatibility: use sseUrl if url is not provided\n                url = options.sseUrl;\n            }\n            if (!url) {\n                throw new Error('URL is required for MCP client (provide either \"url\" or \"sseUrl\")');\n            }\n            // Create transport layer\n            let mcpTransport;\n            if (transport === 'streamablehttp') {\n                // Use new StreamableHTTP transport (recommended)\n                throw new Error('StreamableHTTP transport should use mcpClientManager. Use @capacitor/cors-bypass-enhanced web managers directly.');\n            }\n            else if (transport === 'sse' || options.sseUrl) {\n                // Legacy SSE transport\n                if (this.proxyServerUrl && this.utilsManager.isCrossOrigin(url)) {\n                    // Use proxy server\n                    const proxyUrl = `${this.proxyServerUrl}/sse-proxy/${encodeURIComponent(url)}`;\n                    mcpTransport = new SSEClientTransport(new URL(proxyUrl));\n                }\n                else {\n                    // Direct connection\n                    mcpTransport = new SSEClientTransport(new URL(url));\n                }\n            }\n            else {\n                throw new Error(`Unsupported transport type: ${transport}`);\n            }\n            // Create MCP client\n            const client = new Client({\n                name: options.clientInfo.name,\n                version: options.clientInfo.version,\n            }, {\n                capabilities: {\n                    roots: options.capabilities?.roots ? { listChanged: true } : undefined,\n                    sampling: options.capabilities?.sampling ? {} : undefined,\n                }\n            });\n            // Connect to server\n            await client.connect(mcpTransport);\n            // Store client and transport\n            this.mcpClients.set(connectionId, client);\n            this.mcpTransports.set(connectionId, mcpTransport);\n            console.log(`✅ MCP client connected: ${connectionId}`);\n            return {\n                connectionId,\n                status: 'connected',\n                serverCapabilities: client.getServerCapabilities(),\n                protocolVersion: '2025-03-26'\n            };\n        }\n        catch (error) {\n            console.error(`❌ MCP client connection failed:`, error);\n            throw new Error(`Failed to create MCP client: ${error}`);\n        }\n    }\n    async listMCPResources(options) {\n        const client = this.mcpClients.get(options.connectionId);\n        if (!client) {\n            throw new Error('MCP client not found');\n        }\n        try {\n            const result = await client.listResources(options.cursor ? { cursor: options.cursor } : {});\n            return {\n                resources: result.resources || [],\n                nextCursor: result.nextCursor\n            };\n        }\n        catch (error) {\n            throw new Error(`Failed to list MCP resources: ${error}`);\n        }\n    }\n    async readMCPResource(options) {\n        const client = this.mcpClients.get(options.connectionId);\n        if (!client) {\n            throw new Error('MCP client not found');\n        }\n        try {\n            const result = await client.readResource({ uri: options.uri });\n            return {\n                uri: options.uri,\n                mimeType: result.contents?.[0]?.mimeType || 'text/plain',\n                text: result.contents?.[0]?.text || '',\n                blob: result.contents?.[0]?.data\n            };\n        }\n        catch (error) {\n            throw new Error(`Failed to read MCP resource: ${error}`);\n        }\n    }\n    async listMCPTools(options) {\n        const client = this.mcpClients.get(options.connectionId);\n        if (!client) {\n            throw new Error('MCP client not found');\n        }\n        try {\n            const result = await client.listTools(options.cursor ? { cursor: options.cursor } : {});\n            return {\n                tools: result.tools || [],\n                nextCursor: result.nextCursor\n            };\n        }\n        catch (error) {\n            throw new Error(`Failed to list MCP tools: ${error}`);\n        }\n    }\n    async callMCPTool(options) {\n        const client = this.mcpClients.get(options.connectionId);\n        if (!client) {\n            throw new Error('MCP client not found');\n        }\n        try {\n            const result = await client.callTool({\n                name: options.name,\n                arguments: options.arguments || {}\n            });\n            return {\n                content: result.content || [],\n                isError: result.isError || false\n            };\n        }\n        catch (error) {\n            throw new Error(`Failed to call MCP tool: ${error}`);\n        }\n    }\n    async listMCPPrompts(options) {\n        const client = this.mcpClients.get(options.connectionId);\n        if (!client) {\n            throw new Error('MCP client not found');\n        }\n        try {\n            const result = await client.listPrompts(options.cursor ? { cursor: options.cursor } : {});\n            return {\n                prompts: result.prompts || [],\n                nextCursor: result.nextCursor\n            };\n        }\n        catch (error) {\n            throw new Error(`Failed to list MCP prompts: ${error}`);\n        }\n    }\n    async getMCPPrompt(options) {\n        const client = this.mcpClients.get(options.connectionId);\n        if (!client) {\n            throw new Error('MCP client not found');\n        }\n        try {\n            const result = await client.getPrompt({\n                name: options.name,\n                arguments: options.arguments || {}\n            });\n            return {\n                description: result.description,\n                messages: result.messages || []\n            };\n        }\n        catch (error) {\n            throw new Error(`Failed to get MCP prompt: ${error}`);\n        }\n    }\n    async sendMCPSampling(options) {\n        const client = this.mcpClients.get(options.connectionId);\n        if (!client) {\n            throw new Error('MCP client not found');\n        }\n        try {\n            const result = await client.request({\n                method: options.request.method,\n                params: options.request.params\n            });\n            return result;\n        }\n        catch (error) {\n            throw new Error(`Failed to send MCP sampling request: ${error}`);\n        }\n    }\n    // ==================== Interceptor Management ====================\n    async addInterceptor(interceptor, options) {\n        return this.interceptorManager.addInterceptor(interceptor, options);\n    }\n    async removeInterceptor(handle) {\n        return this.interceptorManager.removeInterceptor(handle);\n    }\n    async removeAllInterceptors() {\n        return this.interceptorManager.removeAllInterceptors();\n    }\n    async getInterceptors() {\n        return this.interceptorManager.getInterceptors();\n    }\n    // ==================== Proxy Management ====================\n    /**\n     * Set global proxy configuration\n     * Note: On Web platform, proxy is handled through the CORS proxy server\n     * The proxy config is stored and can be passed to the server for server-side proxying\n     */\n    async setGlobalProxy(config) {\n        this.globalProxyConfig = config;\n        // If using a proxy server, we can configure it to use the specified proxy\n        if (this.proxyServerUrl && config.enabled) {\n            console.log(`🔧 [Web] Global proxy configured: ${config.type || 'http'}://${config.host}:${config.port}`);\n            console.log('💡 Note: Web platform proxying requires server-side support.');\n        }\n    }\n    /**\n     * Get current global proxy configuration\n     */\n    async getGlobalProxy() {\n        return this.globalProxyConfig;\n    }\n    /**\n     * Clear global proxy configuration\n     */\n    async clearGlobalProxy() {\n        this.globalProxyConfig = null;\n        this.proxyLastError = null;\n        console.log('🔧 [Web] Global proxy configuration cleared');\n    }\n    /**\n     * Test proxy connection\n     * On Web platform, this tests connectivity through the CORS proxy server\n     */\n    async testProxy(config, testUrl) {\n        const startTime = Date.now();\n        const url = testUrl || 'https://www.google.com';\n        if (!config.enabled || !config.host) {\n            return {\n                success: false,\n                error: 'Proxy configuration is invalid or disabled',\n                responseTime: 0\n            };\n        }\n        try {\n            // On Web, we can only test through our proxy server\n            if (this.proxyServerUrl) {\n                const response = await fetch(`${this.proxyServerUrl}/proxy`, {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application/json' },\n                    body: JSON.stringify({\n                        url,\n                        method: 'HEAD',\n                        proxy: {\n                            enabled: true,\n                            type: config.type || 'http',\n                            host: config.host,\n                            port: config.port,\n                            username: config.username,\n                            password: config.password\n                        }\n                    })\n                });\n                const responseTime = Date.now() - startTime;\n                this.proxyRequestCount++;\n                if (response.ok) {\n                    this.proxyLastSuccessTime = Date.now();\n                    this.proxyLastError = null;\n                    return {\n                        success: true,\n                        responseTime,\n                        statusCode: response.status\n                    };\n                }\n                else {\n                    const error = `HTTP ${response.status}`;\n                    this.proxyLastError = error;\n                    return {\n                        success: false,\n                        responseTime,\n                        statusCode: response.status,\n                        error\n                    };\n                }\n            }\n            else {\n                // No proxy server available, test direct connection\n                const controller = new AbortController();\n                const timeoutId = setTimeout(() => controller.abort(), 10000);\n                try {\n                    const response = await fetch(url, {\n                        method: 'HEAD',\n                        mode: 'no-cors',\n                        signal: controller.signal\n                    });\n                    clearTimeout(timeoutId);\n                    const responseTime = Date.now() - startTime;\n                    return {\n                        success: true,\n                        responseTime,\n                        statusCode: response.status || 0\n                    };\n                }\n                catch (fetchError) {\n                    clearTimeout(timeoutId);\n                    return {\n                        success: false,\n                        responseTime: Date.now() - startTime,\n                        error: fetchError.message || 'Connection failed'\n                    };\n                }\n            }\n        }\n        catch (error) {\n            this.proxyLastError = error.message;\n            return {\n                success: false,\n                responseTime: Date.now() - startTime,\n                error: error.message || 'Proxy test failed'\n            };\n        }\n    }\n    /**\n     * Get current proxy status\n     */\n    async getProxyStatus() {\n        return {\n            active: this.globalProxyConfig?.enabled ?? false,\n            config: this.globalProxyConfig ?? undefined,\n            requestCount: this.proxyRequestCount,\n            lastError: this.proxyLastError ?? undefined,\n            lastSuccessTime: this.proxyLastSuccessTime ?? undefined\n        };\n    }\n}\n"],"names":[],"mappings":"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"}