{"version":3,"file":"fetchXHR.cjs","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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"}