mirror of
https://github.com/oven-sh/bun
synced 2026-02-16 22:01:47 +00:00
fetch(stream) add stream support for compressed and uncompressed data (#4127)
* streams non compressed data in 64kb chunks (at least) * fmt * wip remove pause * fix default streaming and buffering * fix atomic lags * fix size * make chunked encoding work again (WIP streaming chunked) * WIP: chunked encoding streaming * fix end of streamings * working streaming + compression * add fixes + tests * fmt + fix proxy * fix oopsies * codegen after merge * fmt + fixes * more fixes * more fixes and logs * avoid double free * check empty before pop * check empty on pop * fix copy to real when complete * remove unnecessary logs * better has_schedule_callback swap, body locked size helper, remove isEmpty from unbounded_queue pop * fix response ref, fix body_size * add deflate support, fix error throw, add more tests * codegen after merge * remove logs, add connection close test * fix macOS build * fix redirect error option * make body_size more clear * support new Reponse(response) * toString DOMWrapper objects properly instead of supporting response in Response constructor * ignore headers with no name, add more tests * oops * handle transform with fetch * add gz image stream test * remove duplicate test * fix missing chunk on macOS under pressure * oops include all OS * some fixes * compare buffers instead of sizes * refactor err.err and protect it
This commit is contained in:
@@ -1852,7 +1852,19 @@ pub const Example = struct {
|
||||
|
||||
// ensure very stable memory address
|
||||
var async_http: *HTTP.AsyncHTTP = ctx.allocator.create(HTTP.AsyncHTTP) catch unreachable;
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(ctx.allocator, .GET, api_url, header_entries, headers_buf, mutable, "", 60 * std.time.ns_per_min, http_proxy, null, HTTP.FetchRedirect.follow);
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(
|
||||
ctx.allocator,
|
||||
.GET,
|
||||
api_url,
|
||||
header_entries,
|
||||
headers_buf,
|
||||
mutable,
|
||||
"",
|
||||
60 * std.time.ns_per_min,
|
||||
http_proxy,
|
||||
null,
|
||||
HTTP.FetchRedirect.follow,
|
||||
);
|
||||
async_http.client.progress_node = progress;
|
||||
const response = try async_http.sendSync(true);
|
||||
|
||||
@@ -1916,7 +1928,19 @@ pub const Example = struct {
|
||||
|
||||
// ensure very stable memory address
|
||||
var async_http: *HTTP.AsyncHTTP = ctx.allocator.create(HTTP.AsyncHTTP) catch unreachable;
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(ctx.allocator, .GET, url, .{}, "", mutable, "", 60 * std.time.ns_per_min, http_proxy, null, HTTP.FetchRedirect.follow);
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(
|
||||
ctx.allocator,
|
||||
.GET,
|
||||
url,
|
||||
.{},
|
||||
"",
|
||||
mutable,
|
||||
"",
|
||||
60 * std.time.ns_per_min,
|
||||
http_proxy,
|
||||
null,
|
||||
HTTP.FetchRedirect.follow,
|
||||
);
|
||||
async_http.client.progress_node = progress;
|
||||
var response = try async_http.sendSync(true);
|
||||
|
||||
@@ -1992,7 +2016,19 @@ pub const Example = struct {
|
||||
|
||||
http_proxy = env_loader.getHttpProxy(parsed_tarball_url);
|
||||
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(ctx.allocator, .GET, parsed_tarball_url, .{}, "", mutable, "", 60 * std.time.ns_per_min, http_proxy, null, HTTP.FetchRedirect.follow);
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(
|
||||
ctx.allocator,
|
||||
.GET,
|
||||
parsed_tarball_url,
|
||||
.{},
|
||||
"",
|
||||
mutable,
|
||||
"",
|
||||
60 * std.time.ns_per_min,
|
||||
http_proxy,
|
||||
null,
|
||||
HTTP.FetchRedirect.follow,
|
||||
);
|
||||
async_http.client.progress_node = progress;
|
||||
|
||||
refresher.maybeRefresh();
|
||||
@@ -2022,7 +2058,19 @@ pub const Example = struct {
|
||||
var mutable = try ctx.allocator.create(MutableString);
|
||||
mutable.* = try MutableString.init(ctx.allocator, 2048);
|
||||
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(ctx.allocator, .GET, url, .{}, "", mutable, "", 60 * std.time.ns_per_min, http_proxy, null, HTTP.FetchRedirect.follow);
|
||||
async_http.* = HTTP.AsyncHTTP.initSync(
|
||||
ctx.allocator,
|
||||
.GET,
|
||||
url,
|
||||
.{},
|
||||
"",
|
||||
mutable,
|
||||
"",
|
||||
60 * std.time.ns_per_min,
|
||||
http_proxy,
|
||||
null,
|
||||
HTTP.FetchRedirect.follow,
|
||||
);
|
||||
|
||||
if (Output.enable_ansi_colors) {
|
||||
async_http.client.progress_node = progress_node;
|
||||
|
||||
Reference in New Issue
Block a user