Skip to content

Commit 38b3f9e

Browse files
committed
[16.2.x] Don't drop FormData entries
1 parent aef22fd commit 38b3f9e

8 files changed

Lines changed: 556 additions & 248 deletions

packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.development.js

Lines changed: 70 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6573,20 +6573,58 @@
65736573
turbopackMap,
65746574
options
65756575
) {
6576-
var response = createResponse(
6576+
function flush() {
6577+
for (; null !== head; ) {
6578+
var current = head;
6579+
if (!current.complete) return;
6580+
try {
6581+
var response = response$jscomp$0,
6582+
key = current.name,
6583+
handle = current.file,
6584+
blob = new Blob(handle.chunks, { type: handle.mime }),
6585+
backingStore = response._formData;
6586+
response = key;
6587+
backingStore.data.append(response, blob, handle.filename);
6588+
var keys = backingStore.keys;
6589+
null === keys
6590+
? ((backingStore.keys = Array.from(backingStore.data.keys())),
6591+
(backingStore.keyPointer = 0))
6592+
: keys.push(response);
6593+
var queuedFields = current.queuedFields;
6594+
if (null !== queuedFields)
6595+
for (response = 0; response < queuedFields.length; response += 2)
6596+
resolveField(
6597+
response$jscomp$0,
6598+
queuedFields[response],
6599+
queuedFields[response + 1]
6600+
);
6601+
} catch (error) {
6602+
busboyStream.destroy(error);
6603+
return;
6604+
}
6605+
head = current.next;
6606+
}
6607+
tail = null;
6608+
bodyFinished && !closed && ((closed = !0), close(response$jscomp$0));
6609+
}
6610+
var response$jscomp$0 = createResponse(
65776611
turbopackMap,
65786612
"",
65796613
options ? options.temporaryReferences : void 0,
65806614
void 0,
65816615
options ? options.arraySizeLimit : void 0
65826616
),
6583-
pendingFiles = 0,
6584-
queuedFields = [];
6617+
head = null,
6618+
tail = null,
6619+
bodyFinished = !1,
6620+
closed = !1;
65856621
busboyStream.on("field", function (name, value) {
6586-
if (0 < pendingFiles) queuedFields.push(name, value);
6622+
if (null !== tail)
6623+
null === tail.queuedFields && (tail.queuedFields = []),
6624+
tail.queuedFields.push(name, value);
65876625
else
65886626
try {
6589-
resolveField(response, name, value);
6627+
resolveField(response$jscomp$0, name, value);
65906628
} catch (error) {
65916629
busboyStream.destroy(error);
65926630
}
@@ -6601,46 +6639,45 @@
66016639
)
66026640
);
66036641
else {
6604-
pendingFiles++;
6605-
var JSCompiler_object_inline_chunks_292 = [];
6642+
var file = { chunks: [], filename: filename, mime: mimeType },
6643+
pendingFile = {
6644+
name: name,
6645+
file: file,
6646+
complete: !1,
6647+
queuedFields: null,
6648+
next: null
6649+
};
6650+
null === tail ? (head = pendingFile) : (tail.next = pendingFile);
6651+
tail = pendingFile;
66066652
value.on("data", function (chunk) {
6607-
JSCompiler_object_inline_chunks_292.push(chunk);
6608-
});
6609-
value.on("end", function () {
66106653
try {
6611-
var blob = new Blob(JSCompiler_object_inline_chunks_292, {
6612-
type: mimeType
6613-
}),
6614-
backingStore = response._formData;
6615-
backingStore.data.append(name, blob, filename);
6616-
var keys = backingStore.keys;
6617-
null === keys
6618-
? ((backingStore.keys = Array.from(backingStore.data.keys())),
6619-
(backingStore.keyPointer = 0))
6620-
: keys.push(name);
6621-
pendingFiles--;
6622-
if (0 === pendingFiles) {
6623-
for (blob = 0; blob < queuedFields.length; blob += 2)
6624-
resolveField(
6625-
response,
6626-
queuedFields[blob],
6627-
queuedFields[blob + 1]
6628-
);
6629-
queuedFields.length = 0;
6630-
}
6654+
file.chunks.push(chunk);
66316655
} catch (error) {
66326656
busboyStream.destroy(error);
66336657
}
66346658
});
6659+
value.on("error", function (error) {
6660+
busboyStream.destroy(error);
6661+
});
6662+
value.on("end", function () {
6663+
pendingFile.complete = !0;
6664+
flush();
6665+
});
66356666
}
66366667
});
66376668
busboyStream.on("finish", function () {
6638-
close(response);
6669+
bodyFinished = !0;
6670+
flush();
6671+
closed ||
6672+
reportGlobalError(
6673+
response$jscomp$0,
6674+
Error("Reply finished with incomplete file part.")
6675+
);
66396676
});
66406677
busboyStream.on("error", function (err) {
6641-
reportGlobalError(response, err);
6678+
reportGlobalError(response$jscomp$0, err);
66426679
});
6643-
return getChunk(response, 0);
6680+
return getChunk(response$jscomp$0, 0);
66446681
};
66456682
exports.prerender = function (model, turbopackMap, options) {
66466683
return new Promise(function (resolve, reject) {

packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.production.js

Lines changed: 69 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3645,17 +3645,58 @@ exports.decodeReplyFromAsyncIterable = function (
36453645
return getChunk(response, 0);
36463646
};
36473647
exports.decodeReplyFromBusboy = function (busboyStream, turbopackMap, options) {
3648+
function flush() {
3649+
for (; null !== head; ) {
3650+
var current = head;
3651+
if (!current.complete) return;
3652+
try {
3653+
var key = current.name,
3654+
handle = current.file,
3655+
blob = new Blob(handle.chunks, { type: handle.mime }),
3656+
backingStore = response._formData,
3657+
key$jscomp$0 = key;
3658+
backingStore.data.append(key$jscomp$0, blob, handle.filename);
3659+
var keys = backingStore.keys;
3660+
null === keys
3661+
? ((backingStore.keys = Array.from(backingStore.data.keys())),
3662+
(backingStore.keyPointer = 0))
3663+
: keys.push(key$jscomp$0);
3664+
var queuedFields = current.queuedFields;
3665+
if (null !== queuedFields)
3666+
for (
3667+
key$jscomp$0 = 0;
3668+
key$jscomp$0 < queuedFields.length;
3669+
key$jscomp$0 += 2
3670+
)
3671+
resolveField(
3672+
response,
3673+
queuedFields[key$jscomp$0],
3674+
queuedFields[key$jscomp$0 + 1]
3675+
);
3676+
} catch (error) {
3677+
busboyStream.destroy(error);
3678+
return;
3679+
}
3680+
head = current.next;
3681+
}
3682+
tail = null;
3683+
bodyFinished && !closed && ((closed = !0), close(response));
3684+
}
36483685
var response = createResponse(
36493686
turbopackMap,
36503687
"",
36513688
options ? options.temporaryReferences : void 0,
36523689
void 0,
36533690
options ? options.arraySizeLimit : void 0
36543691
),
3655-
pendingFiles = 0,
3656-
queuedFields = [];
3692+
head = null,
3693+
tail = null,
3694+
bodyFinished = !1,
3695+
closed = !1;
36573696
busboyStream.on("field", function (name, value) {
3658-
if (0 < pendingFiles) queuedFields.push(name, value);
3697+
if (null !== tail)
3698+
null === tail.queuedFields && (tail.queuedFields = []),
3699+
tail.queuedFields.push(name, value);
36593700
else
36603701
try {
36613702
resolveField(response, name, value);
@@ -3673,41 +3714,40 @@ exports.decodeReplyFromBusboy = function (busboyStream, turbopackMap, options) {
36733714
)
36743715
);
36753716
else {
3676-
pendingFiles++;
3677-
var JSCompiler_object_inline_chunks_299 = [];
3717+
var file = { chunks: [], filename: filename, mime: mimeType },
3718+
pendingFile = {
3719+
name: name,
3720+
file: file,
3721+
complete: !1,
3722+
queuedFields: null,
3723+
next: null
3724+
};
3725+
null === tail ? (head = pendingFile) : (tail.next = pendingFile);
3726+
tail = pendingFile;
36783727
value.on("data", function (chunk) {
3679-
JSCompiler_object_inline_chunks_299.push(chunk);
3680-
});
3681-
value.on("end", function () {
36823728
try {
3683-
var blob = new Blob(JSCompiler_object_inline_chunks_299, {
3684-
type: mimeType
3685-
}),
3686-
backingStore = response._formData;
3687-
backingStore.data.append(name, blob, filename);
3688-
var keys = backingStore.keys;
3689-
null === keys
3690-
? ((backingStore.keys = Array.from(backingStore.data.keys())),
3691-
(backingStore.keyPointer = 0))
3692-
: keys.push(name);
3693-
pendingFiles--;
3694-
if (0 === pendingFiles) {
3695-
for (blob = 0; blob < queuedFields.length; blob += 2)
3696-
resolveField(
3697-
response,
3698-
queuedFields[blob],
3699-
queuedFields[blob + 1]
3700-
);
3701-
queuedFields.length = 0;
3702-
}
3729+
file.chunks.push(chunk);
37033730
} catch (error) {
37043731
busboyStream.destroy(error);
37053732
}
37063733
});
3734+
value.on("error", function (error) {
3735+
busboyStream.destroy(error);
3736+
});
3737+
value.on("end", function () {
3738+
pendingFile.complete = !0;
3739+
flush();
3740+
});
37073741
}
37083742
});
37093743
busboyStream.on("finish", function () {
3710-
close(response);
3744+
bodyFinished = !0;
3745+
flush();
3746+
closed ||
3747+
reportGlobalError(
3748+
response,
3749+
Error("Reply finished with incomplete file part.")
3750+
);
37113751
});
37123752
busboyStream.on("error", function (err) {
37133753
reportGlobalError(response, err);

0 commit comments

Comments
 (0)