diff --git a/CHANGELOG.md b/CHANGELOG.md index b7cdfe3..bfb84cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Libcurl.js Changelog: +## v0.6.19 (11/1/24): +- Improve download speeds even more by reducing memory copies +- Fix wrong mime type being reported in response blob + ## v0.6.18 (10/29/24): - Improve download speeds by increasing libcurl's internal buffer size and listening directly for websocket messages diff --git a/client/javascript/http.js b/client/javascript/http.js index 64273fb..62843c4 100644 --- a/client/javascript/http.js +++ b/client/javascript/http.js @@ -157,6 +157,17 @@ class HTTPSession extends CurlSession { for (let [header_name, header_value] of response_info.headers) { response_obj.headers.append(header_name, header_value); } + + //hack to fix invalid blob type + let response_proto = Object.getPrototypeOf(response_obj); + response_obj.blob = async () => { + let blob = await response_proto.blob.call(response_obj); + let mime_type = blob.type.split(";")[0].trim(); + Object.defineProperty(blob, "type", { + value: mime_type + }); + return blob; + } return response_obj; } diff --git a/client/javascript/session.js b/client/javascript/session.js index c6c8d9a..1c7795b 100644 --- a/client/javascript/session.js +++ b/client/javascript/session.js @@ -41,8 +41,7 @@ class CurlSession { data_callback(request_id, chunk_ptr, chunk_size) { let data = Module.HEAPU8.subarray(chunk_ptr, chunk_ptr + chunk_size); - let chunk = new Uint8Array(data); - this.request_callbacks[request_id].data(chunk); + this.request_callbacks[request_id].data(data); } headers_callback(request_id, chunk_ptr, chunk_size) { diff --git a/client/package.json b/client/package.json index 7e50bb8..de4efa9 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "libcurl.js", - "version": "0.6.18", + "version": "0.6.19", "description": "A port of libcurl to WebAssembly, for proxying HTTPS requests from the browser with full TLS encryption", "main": "libcurl.mjs", "exports": {