{"version":3,"file":"fetchXHR.mjs","sources":["../src/fetchXHR.ts"],"sourcesContent":["/**\n * Minimal fetch-compatible wrapper around XMLHttpRequest.\n * Used as an automatic fallback when globalThis.fetch is unavailable\n * (e.g. Cocos Creator Native).\n */\nexport function xhrFetch(url: string | URL | Request, init?: RequestInit): Promise<Response> {\n    return new Promise((resolve, reject) => {\n        const xhr = new XMLHttpRequest();\n        const method = init?.method || \"GET\";\n\n        xhr.open(method, url.toString());\n        xhr.withCredentials = (init?.credentials === \"include\");\n\n        // Apply request headers\n        if (init?.headers) {\n            const headers = (init.headers instanceof Headers)\n                ? init.headers\n                : new Headers(init.headers as HeadersInit);\n            headers.forEach((value, key) => {\n                xhr.setRequestHeader(key, value);\n            });\n        }\n\n        xhr.onload = () => {\n            // Parse response headers\n            const headers = new Headers();\n            const rawHeaders = xhr.getAllResponseHeaders().trim();\n            if (rawHeaders) {\n                for (const line of rawHeaders.split(/[\\r\\n]+/)) {\n                    const idx = line.indexOf(\": \");\n                    if (idx > 0) {\n                        headers.append(line.substring(0, idx), line.substring(idx + 2));\n                    }\n                }\n            }\n\n            const responseBody = xhr.response ?? xhr.responseText;\n\n            resolve(new XHRResponse(responseBody, {\n                status: xhr.status,\n                statusText: xhr.statusText,\n                headers,\n            }) as unknown as Response);\n        };\n\n        xhr.onerror = () => reject(new TypeError(\"Network request failed\"));\n        xhr.ontimeout = () => reject(new TypeError(\"Network request timed out\"));\n\n        xhr.send(init?.body as XMLHttpRequestBodyInit | null ?? null);\n    });\n}\n\n/**\n * Minimal Response-compatible class backed by XHR response data.\n * Implements only the surface used by HTTP.executeRequest().\n */\nclass XHRResponse {\n    readonly status: number;\n    readonly statusText: string;\n    readonly headers: Headers;\n    readonly ok: boolean;\n\n    private body: any;\n\n    constructor(body: any, init: { status: number; statusText: string; headers: Headers }) {\n        this.body = body;\n        this.status = init.status;\n        this.statusText = init.statusText;\n        this.headers = init.headers;\n        this.ok = init.status >= 200 && init.status < 300;\n    }\n\n    async json(): Promise<any> {\n        return typeof this.body === \"string\"\n            ? JSON.parse(this.body)\n            : this.body;\n    }\n\n    async text(): Promise<string> {\n        return typeof this.body === \"string\"\n            ? this.body\n            : JSON.stringify(this.body);\n    }\n\n    async blob(): Promise<Blob> {\n        return new Blob([this.body]);\n    }\n}\n"],"names":[],"mappings":"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"}