@samitouri / QOS-React-2 / commits / 3025aa3964

[Flight] Don't serialize toJSON in Debug path and omit wide arrays (#34759)

There's a couple of issues with serializing Buffer in the debug renders. For one, the Node.js Buffer has a `toJSON` on it which turns the binary data into a JSON array which is very inefficient to serialize compared to the real buffer. For debug info we never really want to resolve these and unlike the regular render we can't error. So this uses the trick where we read the original value. It's still unfortunate that this intermediate gets created at all but at least now we're not serializing it. Second, we have a limit on depth of objects but we didn't have a limit on width like large arrays or typed arrays. This omits large arrays from the payload when possible and make them deferred when there's a debug channel.

Sebastian Markbåge committed Oct 7, 2025 at 09:59 UTC 3025aa39649ef5106c34cc7896a63d63b2edee91
3 files changed +529 -291
packages/react-server/src/ReactFlightServer.js
+74 -15
@@ -849,6 +849,49 @@ export function resolveRequest(): null | Request {
849 return null;
850 }
851
852 +function isTypedArray(value: any): boolean {
853 + if (value instanceof ArrayBuffer) {
854 + return true;
855 + }
856 + if (value instanceof Int8Array) {
857 + return true;
858 + }
859 + if (value instanceof Uint8Array) {
860 + return true;
861 + }
862 + if (value instanceof Uint8ClampedArray) {
863 + return true;
864 + }
865 + if (value instanceof Int16Array) {
866 + return true;
867 + }
868 + if (value instanceof Uint16Array) {
869 + return true;
870 + }
871 + if (value instanceof Int32Array) {
872 + return true;
873 + }
874 + if (value instanceof Uint32Array) {
875 + return true;
876 + }
877 + if (value instanceof Float32Array) {
878 + return true;
879 + }
880 + if (value instanceof Float64Array) {
881 + return true;
882 + }
883 + if (value instanceof BigInt64Array) {
884 + return true;
885 + }
886 + if (value instanceof BigUint64Array) {
887 + return true;
888 + }
889 + if (value instanceof DataView) {
890 + return true;
891 + }
892 + return false;
893 +}
894 +
895 function serializeDebugThenable(
896 request: Request,
897 counter: {objectLimit: number},
@@ -906,6 +949,17 @@ function serializeDebugThenable(
949 enqueueFlush(request);
950 return;
951 }
952 + if (
953 + (isArray(value) && value.length > 200) ||
954 + (isTypedArray(value) && value.byteLength > 1000)
955 + ) {
956 + // If this should be deferred, but we don't have a debug channel installed
957 + // it would get omitted. We can't omit outlined models but we can avoid
958 + // resolving the Promise at all by halting it.
959 + emitDebugHaltChunk(request, id);
960 + enqueueFlush(request);
961 + return;
962 + }
963 emitOutlinedDebugModelChunk(request, id, counter, value);
964 enqueueFlush(request);
965 },
@@ -3066,6 +3120,10 @@ function serializeDebugTypedArray(
3120 tag: string,
3121 typedArray: $ArrayBufferView,
3122 ): string {
3123 + if (typedArray.byteLength > 1000 && !doNotLimit.has(typedArray)) {
3124 + // Defer large typed arrays.
3125 + return serializeDeferredObject(request, typedArray);
3126 + }
3127 request.pendingDebugChunks++;
3128 const bufferId = request.nextChunkId++;
3129 emitTypedArrayChunk(request, bufferId, tag, typedArray, true);
@@ -4820,9 +4878,17 @@ function renderDebugModel(
4878 }
4879
4880 if (isArray(value)) {
4881 + if (value.length > 200 && !doNotLimit.has(value)) {
4882 + // Defer large arrays. They're heavy to serialize.
4883 + // TODO: Consider doing the same for objects with many properties too.
4884 + return serializeDeferredObject(request, value);
4885 + }
4886 return value;
4887 }
4888
4889 + if (value instanceof Date) {
4890 + return serializeDate(value);
4891 + }
4892 if (value instanceof Map) {
4893 return serializeDebugMap(request, counter, value);
4894 }
@@ -4930,15 +4996,6 @@ function renderDebugModel(
4996 }
4997
4998 if (typeof value === 'string') {
4933 - if (value[value.length - 1] === 'Z') {
4934 - // Possibly a Date, whose toJSON automatically calls toISOString
4935 - // Make sure that `parent[parentPropertyName]` wasn't JSONified before `value` was passed to us
4936 - // $FlowFixMe[incompatible-use]
4937 - const originalValue = parent[parentPropertyName];
4938 - if (originalValue instanceof Date) {
4939 - return serializeDateFromDateJSON(value);
4940 - }
4941 - }
4999 if (value.length >= 1024) {
5000 // Large strings are counted towards the object limit.
5001 if (counter.objectLimit <= 0) {
@@ -5036,10 +5093,6 @@ function renderDebugModel(
5093 return serializeBigInt(value);
5094 }
5095
5039 - if (value instanceof Date) {
5040 - return serializeDate(value);
5041 - }
5042 -
5096 return 'unknown type ' + typeof value;
5097 }
5098
@@ -5058,12 +5111,15 @@ function serializeDebugModel(
5111 value: ReactClientValue,
5112 ): ReactJSONValue {
5113 try {
5114 + // By-pass toJSON and use the original value.
5115 + // $FlowFixMe[incompatible-use]
5116 + const originalValue = this[parentPropertyName];
5117 return renderDebugModel(
5118 request,
5119 counter,
5120 this,
5121 parentPropertyName,
5066 - value,
5122 + originalValue,
5123 );
5124 } catch (x) {
5125 return (
@@ -5114,12 +5170,15 @@ function emitOutlinedDebugModelChunk(
5170 value: ReactClientValue,
5171 ): ReactJSONValue {
5172 try {
5173 + // By-pass toJSON and use the original value.
5174 + // $FlowFixMe[incompatible-use]
5175 + const originalValue = this[parentPropertyName];
5176 return renderDebugModel(
5177 request,
5178 counter,
5179 this,
5180 parentPropertyName,
5122 - value,
5181 + originalValue,
5182 );
5183 } catch (x) {
5184 return (
packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js
+424 -276
@@ -5,6 +5,9 @@
5
6 import {patchSetImmediate} from '../../../../scripts/jest/patchSetImmediate';
7
8 +import fs from 'fs/promises';
9 +import path from 'path';
10 +
11 let React;
12 let ReactServer;
13 let cache;
@@ -156,9 +159,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
159 [
160 "Object.<anonymous>",
161 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
159 - 125,
162 + 128,
163 109,
161 - 105,
164 + 108,
165 50,
166 ],
167 ],
@@ -180,9 +183,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
183 [
184 "Object.<anonymous>",
185 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
183 - 125,
186 + 128,
187 109,
185 - 105,
188 + 108,
189 50,
190 ],
191 ],
@@ -191,25 +194,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
194 [
195 "delay",
196 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
194 - 83,
197 + 86,
198 12,
196 - 82,
199 + 85,
200 3,
201 ],
202 [
203 "getData",
204 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
202 - 107,
205 + 110,
206 13,
204 - 106,
207 + 109,
208 5,
209 ],
210 [
211 "Component",
212 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
210 - 114,
213 + 117,
214 26,
212 - 113,
215 + 116,
216 5,
217 ],
218 ],
@@ -228,9 +231,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
231 [
232 "Object.<anonymous>",
233 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
231 - 125,
234 + 128,
235 109,
233 - 105,
236 + 108,
237 50,
238 ],
239 ],
@@ -239,17 +242,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
242 [
243 "getData",
244 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
242 - 107,
245 + 110,
246 13,
244 - 106,
247 + 109,
248 5,
249 ],
250 [
251 "Component",
252 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
250 - 114,
253 + 117,
254 26,
252 - 113,
255 + 116,
256 5,
257 ],
258 ],
@@ -274,9 +277,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
277 [
278 "Object.<anonymous>",
279 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
277 - 125,
280 + 128,
281 109,
279 - 105,
282 + 108,
283 50,
284 ],
285 ],
@@ -285,25 +288,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
288 [
289 "delay",
290 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
288 - 83,
291 + 86,
292 12,
290 - 82,
293 + 85,
294 3,
295 ],
296 [
297 "getData",
298 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
296 - 108,
299 + 111,
300 21,
298 - 106,
301 + 109,
302 5,
303 ],
304 [
305 "Component",
306 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
304 - 114,
307 + 117,
308 20,
306 - 113,
309 + 116,
310 5,
311 ],
312 ],
@@ -322,9 +325,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
325 [
326 "Object.<anonymous>",
327 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
325 - 125,
328 + 128,
329 109,
327 - 105,
330 + 108,
331 50,
332 ],
333 ],
@@ -333,17 +336,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
336 [
337 "getData",
338 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
336 - 109,
339 + 112,
340 21,
338 - 106,
341 + 109,
342 5,
343 ],
344 [
345 "Component",
346 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
344 - 114,
347 + 117,
348 20,
346 - 113,
349 + 116,
350 5,
351 ],
352 ],
@@ -363,9 +366,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
366 [
367 "Component",
368 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
366 - 116,
369 + 119,
370 60,
368 - 113,
371 + 116,
372 5,
373 ],
374 ],
@@ -387,9 +390,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
390 [
391 "Object.<anonymous>",
392 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
390 - 125,
393 + 128,
394 109,
392 - 105,
395 + 108,
396 50,
397 ],
398 ],
@@ -398,17 +401,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
401 [
402 "delay",
403 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
401 - 83,
404 + 86,
405 12,
403 - 82,
406 + 85,
407 3,
408 ],
409 [
410 "getData",
411 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
409 - 108,
412 + 111,
413 21,
411 - 106,
414 + 109,
415 5,
416 ],
417 ],
@@ -427,9 +430,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
430 [
431 "Component",
432 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
430 - 116,
433 + 119,
434 60,
432 - 113,
435 + 116,
436 5,
437 ],
438 ],
@@ -438,9 +441,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
441 [
442 "InnerComponent",
443 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
441 - 122,
444 + 125,
445 35,
443 - 119,
446 + 122,
447 5,
448 ],
449 ],
@@ -621,9 +624,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
624 [
625 "Object.<anonymous>",
626 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
624 - 585,
627 + 588,
628 40,
626 - 566,
629 + 569,
630 49,
631 ],
632 [
@@ -653,9 +656,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
656 [
657 "Object.<anonymous>",
658 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
656 - 585,
659 + 588,
660 40,
658 - 566,
661 + 569,
662 49,
663 ],
664 [
@@ -672,25 +675,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
675 [
676 "delay",
677 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
675 - 83,
678 + 86,
679 12,
677 - 82,
680 + 85,
681 3,
682 ],
683 [
684 "getData",
685 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
683 - 568,
686 + 571,
687 13,
685 - 567,
688 + 570,
689 5,
690 ],
691 [
692 "Component",
693 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
691 - 573,
694 + 576,
695 36,
693 - 572,
696 + 575,
697 5,
698 ],
699 ],
@@ -709,9 +712,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
712 [
713 "Object.<anonymous>",
714 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
712 - 585,
715 + 588,
716 40,
714 - 566,
717 + 569,
718 49,
719 ],
720 [
@@ -728,17 +731,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
731 [
732 "getData",
733 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
731 - 568,
734 + 571,
735 13,
733 - 567,
736 + 570,
737 5,
738 ],
739 [
740 "Component",
741 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
739 - 573,
742 + 576,
743 36,
741 - 572,
744 + 575,
745 5,
746 ],
747 ],
@@ -758,9 +761,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
761 [
762 "Component",
763 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
761 - 575,
764 + 578,
765 60,
763 - 572,
766 + 575,
767 5,
768 ],
769 ],
@@ -779,9 +782,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
782 [
783 "Object.<anonymous>",
784 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
782 - 585,
785 + 588,
786 40,
784 - 566,
787 + 569,
788 49,
789 ],
790 [
@@ -798,25 +801,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
801 [
802 "delay",
803 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
801 - 83,
804 + 86,
805 12,
803 - 82,
806 + 85,
807 3,
808 ],
809 [
810 "getData",
811 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
809 - 568,
812 + 571,
813 13,
811 - 567,
814 + 570,
815 5,
816 ],
817 [
818 "Component",
819 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
817 - 574,
820 + 577,
821 22,
819 - 572,
822 + 575,
823 5,
824 ],
825 ],
@@ -835,9 +838,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
838 [
839 "Component",
840 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
838 - 575,
841 + 578,
842 60,
840 - 572,
843 + 575,
844 5,
845 ],
846 ],
@@ -846,9 +849,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
849 [
850 "InnerComponent",
851 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
849 - 581,
852 + 584,
853 40,
851 - 578,
854 + 581,
855 5,
856 ],
857 ],
@@ -923,9 +926,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
926 [
927 "Object.<anonymous>",
928 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
926 - 892,
929 + 895,
930 109,
928 - 879,
931 + 882,
932 80,
933 ],
934 ],
@@ -944,9 +947,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
947 [
948 "Object.<anonymous>",
949 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
947 - 892,
950 + 895,
951 109,
949 - 879,
952 + 882,
953 80,
954 ],
955 ],
@@ -963,9 +966,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
966 [
967 "Object.<anonymous>",
968 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
966 - 892,
969 + 895,
970 109,
968 - 879,
971 + 882,
972 80,
973 ],
974 ],
@@ -1037,9 +1040,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1040 [
1041 "Object.<anonymous>",
1042 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1040 - 1006,
1043 + 1009,
1044 109,
1042 - 997,
1045 + 1000,
1046 94,
1047 ],
1048 ],
@@ -1122,9 +1125,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1125 [
1126 "Object.<anonymous>",
1127 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1125 - 1091,
1128 + 1094,
1129 109,
1127 - 1067,
1130 + 1070,
1131 50,
1132 ],
1133 ],
@@ -1218,9 +1221,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1221 [
1222 "Object.<anonymous>",
1223 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1221 - 1187,
1224 + 1190,
1225 109,
1223 - 1170,
1226 + 1173,
1227 63,
1228 ],
1229 ],
@@ -1237,17 +1240,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1240 [
1241 "fetchThirdParty",
1242 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1240 - 90,
1243 + 93,
1244 40,
1242 - 88,
1245 + 91,
1246 3,
1247 ],
1248 [
1249 "Component",
1250 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1248 - 1183,
1251 + 1186,
1252 24,
1250 - 1182,
1253 + 1185,
1254 5,
1255 ],
1256 ],
@@ -1269,17 +1272,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1272 [
1273 "fetchThirdParty",
1274 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1272 - 90,
1275 + 93,
1276 40,
1274 - 88,
1277 + 91,
1278 3,
1279 ],
1280 [
1281 "Component",
1282 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1280 - 1183,
1283 + 1186,
1284 24,
1282 - 1182,
1285 + 1185,
1286 5,
1287 ],
1288 ],
@@ -1288,25 +1291,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
1291 [
1292 "delay",
1293 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1291 - 83,
1294 + 86,
1295 12,
1293 - 82,
1296 + 85,
1297 3,
1298 ],
1299 [
1300 "getData",
1301 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1299 - 1172,
1302 + 1175,
1303 13,
1301 - 1171,
1304 + 1174,
1305 5,
1306 ],
1307 [
1308 "ThirdPartyComponent",
1309 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1307 - 1178,
1310 + 1181,
1311 24,
1309 - 1177,
1312 + 1180,
1313 5,
1314 ],
1315 ],
@@ -1325,17 +1328,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1328 [
1329 "fetchThirdParty",
1330 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1328 - 90,
1331 + 93,
1332 40,
1330 - 88,
1333 + 91,
1334 3,
1335 ],
1336 [
1337 "Component",
1338 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1336 - 1183,
1339 + 1186,
1340 24,
1338 - 1182,
1341 + 1185,
1342 5,
1343 ],
1344 ],
@@ -1344,17 +1347,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1347 [
1348 "getData",
1349 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1347 - 1172,
1350 + 1175,
1351 13,
1349 - 1171,
1352 + 1174,
1353 5,
1354 ],
1355 [
1356 "ThirdPartyComponent",
1357 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1355 - 1178,
1358 + 1181,
1359 24,
1357 - 1177,
1360 + 1180,
1361 5,
1362 ],
1363 ],
@@ -1379,17 +1382,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1382 [
1383 "fetchThirdParty",
1384 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1382 - 90,
1385 + 93,
1386 40,
1384 - 88,
1387 + 91,
1388 3,
1389 ],
1390 [
1391 "Component",
1392 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1390 - 1183,
1393 + 1186,
1394 24,
1392 - 1182,
1395 + 1185,
1396 5,
1397 ],
1398 ],
@@ -1398,25 +1401,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
1401 [
1402 "delay",
1403 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1401 - 83,
1404 + 86,
1405 12,
1403 - 82,
1406 + 85,
1407 3,
1408 ],
1409 [
1410 "getData",
1411 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1409 - 1173,
1412 + 1176,
1413 13,
1411 - 1171,
1414 + 1174,
1415 5,
1416 ],
1417 [
1418 "ThirdPartyComponent",
1419 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1417 - 1178,
1420 + 1181,
1421 18,
1419 - 1177,
1422 + 1180,
1423 5,
1424 ],
1425 ],
@@ -1435,17 +1438,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1438 [
1439 "fetchThirdParty",
1440 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1438 - 90,
1441 + 93,
1442 40,
1440 - 88,
1443 + 91,
1444 3,
1445 ],
1446 [
1447 "Component",
1448 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1446 - 1183,
1449 + 1186,
1450 24,
1448 - 1182,
1451 + 1185,
1452 5,
1453 ],
1454 ],
@@ -1454,17 +1457,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1457 [
1458 "getData",
1459 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1457 - 1173,
1460 + 1176,
1461 13,
1459 - 1171,
1462 + 1174,
1463 5,
1464 ],
1465 [
1466 "ThirdPartyComponent",
1467 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1465 - 1178,
1468 + 1181,
1469 18,
1467 - 1177,
1470 + 1180,
1471 5,
1472 ],
1473 ],
@@ -1562,9 +1565,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1565 [
1566 "Object.<anonymous>",
1567 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1565 - 1526,
1568 + 1529,
1569 40,
1567 - 1509,
1570 + 1512,
1571 62,
1572 ],
1573 [
@@ -1594,9 +1597,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1597 [
1598 "Object.<anonymous>",
1599 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1597 - 1526,
1600 + 1529,
1601 40,
1599 - 1509,
1602 + 1512,
1603 62,
1604 ],
1605 [
@@ -1613,25 +1616,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
1616 [
1617 "delay",
1618 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1616 - 83,
1619 + 86,
1620 12,
1618 - 82,
1621 + 85,
1622 3,
1623 ],
1624 [
1625 "getData",
1626 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1624 - 1511,
1627 + 1514,
1628 13,
1626 - 1510,
1629 + 1513,
1630 25,
1631 ],
1632 [
1633 "Component",
1634 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1632 - 1521,
1635 + 1524,
1636 13,
1634 - 1520,
1637 + 1523,
1638 5,
1639 ],
1640 ],
@@ -1650,9 +1653,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1653 [
1654 "Object.<anonymous>",
1655 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1653 - 1526,
1656 + 1529,
1657 40,
1655 - 1509,
1658 + 1512,
1659 62,
1660 ],
1661 [
@@ -1669,17 +1672,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1672 [
1673 "getData",
1674 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1672 - 1511,
1675 + 1514,
1676 13,
1674 - 1510,
1677 + 1513,
1678 25,
1679 ],
1680 [
1681 "Component",
1682 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1680 - 1521,
1683 + 1524,
1684 13,
1682 - 1520,
1685 + 1523,
1686 5,
1687 ],
1688 ],
@@ -1699,9 +1702,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1702 [
1703 "Component",
1704 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1702 - 1522,
1705 + 1525,
1706 60,
1704 - 1520,
1707 + 1523,
1708 5,
1709 ],
1710 ],
@@ -1723,9 +1726,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1726 [
1727 "Object.<anonymous>",
1728 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1726 - 1526,
1729 + 1529,
1730 40,
1728 - 1509,
1731 + 1512,
1732 62,
1733 ],
1734 [
@@ -1742,25 +1745,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
1745 [
1746 "delay",
1747 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1745 - 83,
1748 + 86,
1749 12,
1747 - 82,
1750 + 85,
1751 3,
1752 ],
1753 [
1754 "getData",
1755 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1753 - 1511,
1756 + 1514,
1757 13,
1755 - 1510,
1758 + 1513,
1759 25,
1760 ],
1761 [
1762 "Component",
1763 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1761 - 1521,
1764 + 1524,
1765 13,
1763 - 1520,
1766 + 1523,
1767 5,
1768 ],
1769 ],
@@ -1779,9 +1782,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1782 [
1783 "Component",
1784 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1782 - 1522,
1785 + 1525,
1786 60,
1784 - 1520,
1787 + 1523,
1788 5,
1789 ],
1790 ],
@@ -1790,9 +1793,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1793 [
1794 "Child",
1795 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1793 - 1516,
1796 + 1519,
1797 28,
1795 - 1515,
1798 + 1518,
1799 5,
1800 ],
1801 ],
@@ -1875,9 +1878,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1878 [
1879 "Object.<anonymous>",
1880 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1878 - 1839,
1881 + 1842,
1882 40,
1880 - 1823,
1883 + 1826,
1884 57,
1885 ],
1886 [
@@ -1907,9 +1910,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1910 [
1911 "Object.<anonymous>",
1912 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1910 - 1839,
1913 + 1842,
1914 40,
1912 - 1823,
1915 + 1826,
1916 57,
1917 ],
1918 [
@@ -1926,25 +1929,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
1929 [
1930 "delay",
1931 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1929 - 83,
1932 + 86,
1933 12,
1931 - 82,
1934 + 85,
1935 3,
1936 ],
1937 [
1938 "getData",
1939 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1937 - 1825,
1940 + 1828,
1941 13,
1939 - 1824,
1942 + 1827,
1943 25,
1944 ],
1945 [
1946 "Component",
1947 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1945 - 1834,
1948 + 1837,
1949 23,
1947 - 1833,
1950 + 1836,
1951 5,
1952 ],
1953 ],
@@ -1963,9 +1966,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
1966 [
1967 "Object.<anonymous>",
1968 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1966 - 1839,
1969 + 1842,
1970 40,
1968 - 1823,
1971 + 1826,
1972 57,
1973 ],
1974 [
@@ -1982,17 +1985,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
1985 [
1986 "getData",
1987 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1985 - 1825,
1988 + 1828,
1989 13,
1987 - 1824,
1990 + 1827,
1991 25,
1992 ],
1993 [
1994 "Component",
1995 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
1993 - 1834,
1996 + 1837,
1997 23,
1995 - 1833,
1998 + 1836,
1999 5,
2000 ],
2001 ],
@@ -2012,9 +2015,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2015 [
2016 "Component",
2017 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2015 - 1835,
2018 + 1838,
2019 60,
2017 - 1833,
2020 + 1836,
2021 5,
2022 ],
2023 ],
@@ -2033,9 +2036,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2036 [
2037 "Object.<anonymous>",
2038 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2036 - 1839,
2039 + 1842,
2040 40,
2038 - 1823,
2041 + 1826,
2042 57,
2043 ],
2044 [
@@ -2052,25 +2055,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
2055 [
2056 "delay",
2057 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2055 - 83,
2058 + 86,
2059 12,
2057 - 82,
2060 + 85,
2061 3,
2062 ],
2063 [
2064 "getData",
2065 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2063 - 1825,
2066 + 1828,
2067 13,
2065 - 1824,
2068 + 1827,
2069 25,
2070 ],
2071 [
2072 "Component",
2073 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2071 - 1834,
2074 + 1837,
2075 23,
2073 - 1833,
2076 + 1836,
2077 5,
2078 ],
2079 ],
@@ -2084,9 +2087,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2087 [
2088 "Component",
2089 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2087 - 1835,
2090 + 1838,
2091 60,
2089 - 1833,
2092 + 1836,
2093 5,
2094 ],
2095 ],
@@ -2171,9 +2174,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2174 [
2175 "Object.<anonymous>",
2176 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2174 - 2135,
2177 + 2138,
2178 40,
2176 - 2117,
2179 + 2120,
2180 80,
2181 ],
2182 [
@@ -2203,9 +2206,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2206 [
2207 "Object.<anonymous>",
2208 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2206 - 2135,
2209 + 2138,
2210 40,
2208 - 2117,
2211 + 2120,
2212 80,
2213 ],
2214 [
@@ -2222,25 +2225,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
2225 [
2226 "delay",
2227 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2225 - 83,
2228 + 86,
2229 12,
2227 - 82,
2230 + 85,
2231 3,
2232 ],
2233 [
2234 "delayTrice",
2235 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2233 - 2125,
2236 + 2128,
2237 13,
2235 - 2123,
2238 + 2126,
2239 5,
2240 ],
2241 [
2242 "Bar",
2243 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2241 - 2130,
2244 + 2133,
2245 13,
2243 - 2129,
2246 + 2132,
2247 5,
2248 ],
2249 ],
@@ -2259,9 +2262,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2262 [
2263 "Object.<anonymous>",
2264 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2262 - 2135,
2265 + 2138,
2266 40,
2264 - 2117,
2267 + 2120,
2268 80,
2269 ],
2270 [
@@ -2278,17 +2281,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
2281 [
2282 "delayTrice",
2283 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2281 - 2125,
2284 + 2128,
2285 13,
2283 - 2123,
2286 + 2126,
2287 5,
2288 ],
2289 [
2290 "Bar",
2291 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2289 - 2130,
2292 + 2133,
2293 13,
2291 - 2129,
2294 + 2132,
2295 5,
2296 ],
2297 ],
@@ -2310,9 +2313,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2313 [
2314 "Object.<anonymous>",
2315 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2313 - 2135,
2316 + 2138,
2317 40,
2315 - 2117,
2318 + 2120,
2319 80,
2320 ],
2321 [
@@ -2329,33 +2332,33 @@ describe('ReactFlightAsyncDebugInfo', () => {
2332 [
2333 "delay",
2334 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2332 - 83,
2335 + 86,
2336 12,
2334 - 82,
2337 + 85,
2338 3,
2339 ],
2340 [
2341 "delayTwice",
2342 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2340 - 2119,
2343 + 2122,
2344 13,
2342 - 2118,
2345 + 2121,
2346 5,
2347 ],
2348 [
2349 "delayTrice",
2350 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2348 - 2124,
2351 + 2127,
2352 15,
2350 - 2123,
2353 + 2126,
2354 5,
2355 ],
2356 [
2357 "Bar",
2358 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2356 - 2130,
2359 + 2133,
2360 13,
2358 - 2129,
2361 + 2132,
2362 5,
2363 ],
2364 ],
@@ -2374,9 +2377,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2377 [
2378 "Object.<anonymous>",
2379 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2377 - 2135,
2380 + 2138,
2381 40,
2379 - 2117,
2382 + 2120,
2383 80,
2384 ],
2385 [
@@ -2393,25 +2396,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
2396 [
2397 "delayTwice",
2398 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2396 - 2119,
2399 + 2122,
2400 13,
2398 - 2118,
2401 + 2121,
2402 5,
2403 ],
2404 [
2405 "delayTrice",
2406 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2404 - 2124,
2407 + 2127,
2408 15,
2406 - 2123,
2409 + 2126,
2410 5,
2411 ],
2412 [
2413 "Bar",
2414 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2412 - 2130,
2415 + 2133,
2416 13,
2414 - 2129,
2417 + 2132,
2418 5,
2419 ],
2420 ],
@@ -2433,9 +2436,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2436 [
2437 "Object.<anonymous>",
2438 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2436 - 2135,
2439 + 2138,
2440 40,
2438 - 2117,
2441 + 2120,
2442 80,
2443 ],
2444 [
@@ -2452,17 +2455,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
2455 [
2456 "delay",
2457 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2455 - 83,
2458 + 86,
2459 12,
2457 - 82,
2460 + 85,
2461 3,
2462 ],
2463 [
2464 "delayTwice",
2465 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2463 - 2120,
2466 + 2123,
2467 13,
2465 - 2118,
2468 + 2121,
2469 5,
2470 ],
2471 ],
@@ -2481,9 +2484,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2484 [
2485 "Object.<anonymous>",
2486 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2484 - 2135,
2487 + 2138,
2488 40,
2486 - 2117,
2489 + 2120,
2490 80,
2491 ],
2492 [
@@ -2500,9 +2503,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2503 [
2504 "delayTwice",
2505 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2503 - 2120,
2506 + 2123,
2507 13,
2505 - 2118,
2508 + 2121,
2509 5,
2510 ],
2511 ],
@@ -2575,9 +2578,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2578 [
2579 "Object.<anonymous>",
2580 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2578 - 2544,
2581 + 2547,
2582 109,
2580 - 2533,
2583 + 2536,
2584 58,
2585 ],
2586 ],
@@ -2599,9 +2602,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2602 [
2603 "Object.<anonymous>",
2604 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2602 - 2544,
2605 + 2547,
2606 109,
2604 - 2533,
2607 + 2536,
2608 58,
2609 ],
2610 ],
@@ -2610,25 +2613,25 @@ describe('ReactFlightAsyncDebugInfo', () => {
2613 [
2614 "delay",
2615 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2613 - 83,
2616 + 86,
2617 12,
2615 - 82,
2618 + 85,
2619 3,
2620 ],
2621 [
2622 "getData",
2623 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2621 - 2535,
2624 + 2538,
2625 14,
2623 - 2534,
2626 + 2537,
2627 5,
2628 ],
2629 [
2630 "Component",
2631 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2629 - 2541,
2632 + 2544,
2633 20,
2631 - 2540,
2634 + 2543,
2635 5,
2636 ],
2637 ],
@@ -2647,9 +2650,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2650 [
2651 "Object.<anonymous>",
2652 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2650 - 2544,
2653 + 2547,
2654 109,
2652 - 2533,
2655 + 2536,
2656 58,
2657 ],
2658 ],
@@ -2658,17 +2661,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
2661 [
2662 "getData",
2663 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2661 - 2535,
2664 + 2538,
2665 23,
2663 - 2534,
2666 + 2537,
2667 5,
2668 ],
2669 [
2670 "Component",
2671 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2669 - 2541,
2672 + 2544,
2673 20,
2671 - 2540,
2674 + 2543,
2675 5,
2676 ],
2677 ],
@@ -2747,9 +2750,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2750 [
2751 "Object.<anonymous>",
2752 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2750 - 2711,
2753 + 2714,
2754 40,
2752 - 2699,
2755 + 2702,
2756 56,
2757 ],
2758 [
@@ -2779,9 +2782,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2782 [
2783 "Object.<anonymous>",
2784 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2782 - 2711,
2785 + 2714,
2786 40,
2784 - 2699,
2787 + 2702,
2788 56,
2789 ],
2790 [
@@ -2798,17 +2801,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
2801 [
2802 "delay",
2803 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2801 - 83,
2804 + 86,
2805 12,
2803 - 82,
2806 + 85,
2807 3,
2808 ],
2809 [
2810 "Component",
2811 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2809 - 2707,
2812 + 2710,
2813 20,
2811 - 2706,
2814 + 2709,
2815 5,
2816 ],
2817 ],
@@ -2827,9 +2830,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2830 [
2831 "Object.<anonymous>",
2832 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2830 - 2711,
2833 + 2714,
2834 40,
2832 - 2699,
2835 + 2702,
2836 56,
2837 ],
2838 [
@@ -2846,9 +2849,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2849 [
2850 "Component",
2851 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2849 - 2707,
2852 + 2710,
2853 20,
2851 - 2706,
2854 + 2709,
2855 5,
2856 ],
2857 ],
@@ -2941,9 +2944,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2944 [
2945 "Object.<anonymous>",
2946 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2944 - 2900,
2947 + 2903,
2948 40,
2946 - 2879,
2949 + 2882,
2950 42,
2951 ],
2952 [
@@ -2973,9 +2976,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
2976 [
2977 "Object.<anonymous>",
2978 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2976 - 2900,
2979 + 2903,
2980 40,
2978 - 2879,
2981 + 2882,
2982 42,
2983 ],
2984 [
@@ -2992,17 +2995,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
2995 [
2996 "",
2997 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2995 - 2886,
2998 + 2889,
2999 15,
2997 - 2885,
3000 + 2888,
3001 15,
3002 ],
3003 [
3004 "Component",
3005 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3003 - 2895,
3006 + 2898,
3007 19,
3005 - 2894,
3008 + 2897,
3009 5,
3010 ],
3011 ],
@@ -3021,9 +3024,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
3024 [
3025 "Object.<anonymous>",
3026 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3024 - 2900,
3027 + 2903,
3028 40,
3026 - 2879,
3029 + 2882,
3030 42,
3031 ],
3032 [
@@ -3040,17 +3043,17 @@ describe('ReactFlightAsyncDebugInfo', () => {
3043 [
3044 "",
3045 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3043 - 2886,
3046 + 2889,
3047 15,
3045 - 2885,
3048 + 2888,
3049 15,
3050 ],
3051 [
3052 "Component",
3053 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3051 - 2895,
3054 + 2898,
3055 19,
3053 - 2894,
3056 + 2897,
3057 5,
3058 ],
3059 ],
@@ -3072,9 +3075,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
3075 [
3076 "Object.<anonymous>",
3077 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3075 - 2900,
3078 + 2903,
3079 40,
3077 - 2879,
3080 + 2882,
3081 42,
3082 ],
3083 [
@@ -3091,9 +3094,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
3094 [
3095 "Component",
3096 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3094 - 2895,
3097 + 2898,
3098 25,
3096 - 2894,
3099 + 2897,
3100 5,
3101 ],
3102 ],
@@ -3112,9 +3115,9 @@ describe('ReactFlightAsyncDebugInfo', () => {
3115 [
3116 "Object.<anonymous>",
3117 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3115 - 2900,
3118 + 2903,
3119 40,
3117 - 2879,
3120 + 2882,
3121 42,
3122 ],
3123 [
@@ -3131,9 +3134,154 @@ describe('ReactFlightAsyncDebugInfo', () => {
3134 [
3135 "Component",
3136 "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3134 - 2895,
3137 + 2898,
3138 25,
3136 - 2894,
3139 + 2897,
3140 + 5,
3141 + ],
3142 + ],
3143 + },
3144 + {
3145 + "time": 0,
3146 + },
3147 + {
3148 + "time": 0,
3149 + },
3150 + {
3151 + "awaited": {
3152 + "byteSize": 0,
3153 + "end": 0,
3154 + "name": "RSC stream",
3155 + "owner": null,
3156 + "start": 0,
3157 + "value": {
3158 + "value": "stream",
3159 + },
3160 + },
3161 + },
3162 + ]
3163 + `);
3164 + }
3165 + });
3166 +
3167 + it('can track async file reads', async () => {
3168 + const filename = path.join(__dirname, 'test-file.txt');
3169 + async function Component() {
3170 + const buffer = await fs
3171 + .readFile(filename) // This loads a Buffer.
3172 + // TODO: For some reason, without this we're extracting the wrong promise.
3173 + .then(v => v);
3174 + const text = buffer.toString('utf8');
3175 + return text.slice(0, 26);
3176 + }
3177 +
3178 + const stream = ReactServerDOMServer.renderToPipeableStream(
3179 + <Component />,
3180 + {},
3181 + );
3182 +
3183 + const readable = new Stream.PassThrough(streamOptions);
3184 +
3185 + const result = ReactServerDOMClient.createFromNodeStream(readable, {
3186 + moduleMap: {},
3187 + moduleLoading: {},
3188 + });
3189 + stream.pipe(readable);
3190 +
3191 + expect(await result).toBe('Lorem ipsum dolor sit amet');
3192 +
3193 + await finishLoadingStream(readable);
3194 + if (
3195 + __DEV__ &&
3196 + gate(
3197 + flags =>
3198 + flags.enableComponentPerformanceTrack && flags.enableAsyncDebugInfo,
3199 + )
3200 + ) {
3201 + expect(getDebugInfo(result)).toMatchInlineSnapshot(`
3202 + [
3203 + {
3204 + "time": 0,
3205 + },
3206 + {
3207 + "env": "Server",
3208 + "key": null,
3209 + "name": "Component",
3210 + "props": {},
3211 + "stack": [
3212 + [
3213 + "Object.<anonymous>",
3214 + "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3215 + 3179,
3216 + 40,
3217 + 3167,
3218 + 36,
3219 + ],
3220 + ],
3221 + },
3222 + {
3223 + "time": 0,
3224 + },
3225 + {
3226 + "awaited": {
3227 + "end": 0,
3228 + "env": "Server",
3229 + "name": "Object.readFile",
3230 + "owner": {
3231 + "env": "Server",
3232 + "key": null,
3233 + "name": "Component",
3234 + "props": {},
3235 + "stack": [
3236 + [
3237 + "Object.<anonymous>",
3238 + "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3239 + 3179,
3240 + 40,
3241 + 3167,
3242 + 36,
3243 + ],
3244 + ],
3245 + },
3246 + "stack": [
3247 + [
3248 + "Component",
3249 + "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3250 + 3171,
3251 + 7,
3252 + 3169,
3253 + 5,
3254 + ],
3255 + ],
3256 + "start": 0,
3257 + "value": {
3258 + "status": "halted",
3259 + },
3260 + },
3261 + "env": "Server",
3262 + "owner": {
3263 + "env": "Server",
3264 + "key": null,
3265 + "name": "Component",
3266 + "props": {},
3267 + "stack": [
3268 + [
3269 + "Object.<anonymous>",
3270 + "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3271 + 3179,
3272 + 40,
3273 + 3167,
3274 + 36,
3275 + ],
3276 + ],
3277 + },
3278 + "stack": [
3279 + [
3280 + "Component",
3281 + "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
3282 + 3173,
3283 + 7,
3284 + 3169,
3285 5,
3286 ],
3287 ],
packages/react-server/src/__tests__/test-file.txt new
+31
@@ -0,0 +1,31 @@
1 +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius diam ut lectus suscipit, ac faucibus tellus fermentum. Phasellus rutrum bibendum tellus, eu malesuada metus dignissim sed. Pellentesque et quam libero. Donec ultricies massa vitae justo maximus, ultricies ultrices diam dictum. Ut in lectus non diam porttitor accumsan ac hendrerit tortor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec a massa augue. Sed vitae purus id sapien luctus mattis. Maecenas imperdiet vehicula rhoncus.
2 +
3 +Etiam non tincidunt sapien, rhoncus fermentum ipsum. Cras id gravida felis. Phasellus finibus, mauris eu viverra auctor, augue tellus elementum sem, a vestibulum ligula purus vel erat. Nulla facilisi. Curabitur nulla ligula, viverra et elementum quis, sollicitudin sit amet nisl. Aenean vitae tortor mauris. Fusce iaculis risus eget lacus faucibus, quis congue dolor egestas. Integer viverra tellus tortor, vitae malesuada lorem ultricies vitae. Ut lacinia diam non ante pellentesque posuere. Suspendisse at posuere nunc, eget viverra elit. Vestibulum sit amet maximus lorem.
4 +
5 +Proin fermentum lacus non convallis gravida. Morbi a blandit nisi. Nam posuere lacus vitae molestie aliquam. Cras enim orci, elementum et urna vel, vehicula gravida neque. Etiam quis odio at odio aliquet lobortis ac et sapien. Nulla commodo, ante eget sodales facilisis, magna elit pretium odio, a consectetur dui tortor at erat. Morbi quis laoreet metus. Sed iaculis sodales nisi, ut pharetra magna laoreet eu.
6 +
7 +In iaculis, dolor quis consectetur fringilla, justo quam viverra turpis, eget dictum lectus nisl nec mi. Phasellus suscipit, leo ut tincidunt molestie, odio purus ornare ex, sagittis ornare erat nunc vel magna. Morbi malesuada risus nec turpis ultricies molestie dapibus nec justo. Vestibulum tempus bibendum purus, nec sodales libero convallis at. Fusce ipsum nibh, fringilla at sapien sit amet, malesuada suscipit lorem. Fusce et libero a dui gravida ultrices. Vestibulum quis lobortis velit. Morbi ut nisl lobortis, tempus sapien et, convallis mi. Integer varius, felis eu egestas dignissim, risus augue tristique elit, ultricies interdum arcu nibh et lectus. Integer enim mi, viverra eget scelerisque at, gravida eget justo. Nullam eget dolor id orci fringilla ultricies. In id luctus erat. Donec quis magna quis neque congue venenatis sit amet vel turpis. Donec congue tortor eu massa ullamcorper, ut imperdiet lectus posuere. Maecenas quis lorem quis nulla vehicula varius.
8 +
9 +Suspendisse tristique elit et luctus suscipit. Nunc quis justo luctus, malesuada velit vitae, accumsan tellus. Nunc ex sem, efficitur vitae semper et, consectetur quis turpis. Donec et tincidunt est, vitae varius sem. Aliquam at luctus dolor. Etiam pretium justo lectus, quis tempus quam feugiat ac. Suspendisse vitae sollicitudin erat, ut interdum felis. Cras lacinia tincidunt tempus. Vivamus congue et lectus quis suscipit. Fusce ultricies justo eget mi elementum, vitae consectetur lacus varius. Praesent fermentum in risus sit amet malesuada. Mauris semper sapien ornare pulvinar venenatis. Suspendisse potenti.
10 +
11 +Donec vestibulum purus et est cursus hendrerit. Vivamus pharetra ligula dolor, ut commodo felis accumsan sed. Integer pulvinar mollis metus, at cursus turpis laoreet ac. Maecenas lectus felis, dapibus eu ligula at, lacinia pharetra ex. Duis id tortor a metus pulvinar tincidunt. Suspendisse at lacus a nulla feugiat malesuada. Ut tincidunt interdum placerat. Fusce tincidunt elit in convallis elementum. Etiam commodo felis ut neque dapibus, ac finibus ante auctor. Sed tincidunt massa vitae sapien semper suscipit.
12 +
13 +Donec euismod sagittis lacus, eu lacinia tortor rutrum eu. Donec et sapien lacus. Aliquam non commodo magna, vitae commodo tortor. Vivamus vel urna eget ante varius condimentum. Etiam non purus pharetra, pharetra sem eu, maximus felis. Integer nec urna justo. Etiam a dolor tempor, posuere odio non, maximus metus. Vivamus malesuada mi libero, a viverra velit tempus vitae. Quisque accumsan sed nisi a venenatis. Donec malesuada erat at lacus tincidunt, sed euismod est ultricies. Fusce id posuere nisl. Aliquam erat volutpat. Morbi non erat iaculis turpis interdum facilisis. Nunc risus elit, laoreet quis ante sed, aliquam pharetra massa. Fusce cursus urna nec pharetra interdum.
14 +
15 +Etiam pharetra, metus nec malesuada efficitur, dui ipsum blandit felis, id cursus elit orci at eros. Phasellus suscipit lobortis est. Praesent egestas, est et scelerisque consectetur, neque velit dapibus elit, quis hendrerit nisi felis a nulla. Quisque facilisis rutrum varius. Integer quis libero sit amet erat tincidunt semper a vel quam. Curabitur rutrum fringilla consequat. Fusce in metus ut odio luctus viverra viverra et nulla. Vestibulum a lacinia augue, feugiat egestas diam. Proin elit arcu, venenatis quis elementum in, rutrum quis tortor. Integer vel lacus urna. Suspendisse pharetra sapien at ullamcorper hendrerit. Etiam nibh ipsum, vulputate eu pulvinar nec, pulvinar id odio.
16 +
17 +Proin tincidunt, augue id tristique dictum, nisi sem congue orci, non faucibus erat nibh ac metus. Curabitur leo massa, hendrerit a venenatis sed, aliquam ac ligula. Fusce facilisis vulputate dui ut sollicitudin. Phasellus tellus lacus, viverra at dui sit amet, facilisis accumsan nisi. Phasellus dui lectus, lobortis consequat convallis sed, luctus non dui. Duis tempus urna sed libero ullamcorper, placerat luctus enim dignissim. Mauris vitae odio mauris. Donec eget tortor vitae nibh laoreet viverra at eget urna. Integer in ex arcu. Vestibulum tellus erat, tempus sit amet neque nec, tristique maximus neque. Vivamus efficitur nisi massa, ut tempus lacus interdum quis. Cras posuere erat nec convallis viverra. Aenean efficitur nibh et augue maximus pretium. Aliquam hendrerit nulla dui. Donec elit enim, hendrerit ultricies orci sed, blandit elementum quam.
18 +
19 +Donec fringilla pretium ligula, sed imperdiet orci mattis quis. Mauris ullamcorper fermentum libero fringilla molestie. Sed laoreet, nisl in viverra convallis, enim tortor tincidunt elit, in consequat diam metus non libero. Quisque eleifend lobortis lobortis. Donec porta eget justo faucibus sagittis. Phasellus lacus diam, convallis tristique metus at, placerat luctus justo. Fusce vestibulum urna eget dictum vulputate. Nam non nisl bibendum risus vehicula rutrum nec vel purus. Morbi nec diam laoreet quam sodales malesuada. Suspendisse efficitur, magna vel sodales semper, neque nulla aliquam nisi, hendrerit mollis justo libero vel mi.
20 +
21 +Etiam tellus neque, vulputate quis justo sit amet, dapibus suscipit est. Morbi pulvinar ipsum risus, eu lacinia felis viverra eget. Quisque massa justo, aliquam non ornare sit amet, maximus maximus dui. Pellentesque aliquam fermentum libero sed aliquet. Nulla consequat ultrices commodo. Donec condimentum consectetur nulla, id euismod metus facilisis eget. Fusce at mauris blandit, mollis ex nec, dignissim ex. Proin nec facilisis arcu. In vestibulum at erat vel ultrices. Mauris lacinia elementum nibh rhoncus egestas. Duis lobortis magna eget sem consequat, ac malesuada orci gravida. Duis cursus quam augue, a condimentum velit scelerisque eget. Donec dapibus pellentesque tellus. Nulla malesuada, purus id efficitur volutpat, felis odio faucibus metus, scelerisque hendrerit enim velit in urna.
22 +
23 +Nulla massa felis, semper eget consectetur ac, scelerisque vitae mi. Praesent sit amet sagittis metus. Curabitur mollis ex quis erat faucibus mattis. Nullam risus lacus, suscipit sed luctus vel, dictum id odio. In et dictum elit. Aliquam quis consectetur metus. In feugiat, urna ac porttitor auctor, est arcu porta est, vel lobortis erat elit quis nunc. Nulla quis nibh vel sem fringilla semper sed quis ipsum. Morbi vehicula, urna non rhoncus hendrerit, velit purus accumsan purus, vel elementum arcu dui sit amet leo. Aenean ultricies orci ac ante placerat, id auctor magna sodales. Nam sit amet laoreet lectus. Etiam ligula velit, dignissim vel tincidunt at, dictum nec lacus. Nam non eleifend enim, sit amet dictum lectus. Suspendisse potenti. Suspendisse eget ante a mauris placerat lobortis sed eu dui.
24 +
25 +Nam et porta elit, vel interdum mauris. Vivamus eu elit nec nisl bibendum hendrerit. Morbi ornare mollis lacus non finibus. Praesent id orci ex. Donec commodo viverra dictum. Phasellus in lacus tellus. Curabitur at lorem efficitur leo dignissim varius at eu est. Vivamus justo erat, hendrerit id volutpat nec, euismod eget odio. Mauris et vulputate tellus, in maximus nunc. Vestibulum ante ligula, suscipit nec nibh in, placerat pellentesque neque.
26 +
27 +Nunc in accumsan ligula, quis accumsan diam. Fusce tincidunt neque a turpis ornare, id convallis quam convallis. Donec at luctus ipsum. Nam id enim ante. Fusce condimentum consectetur justo, in hendrerit lacus vehicula ut. Vestibulum ut hendrerit risus. Donec blandit ut magna eget aliquet. Donec sit amet faucibus ante. Suspendisse condimentum, mauris id aliquam ultricies, erat mi tincidunt eros, sit amet blandit urna purus vitae orci. Maecenas in faucibus ipsum, quis gravida ex. Sed tincidunt in ipsum id dignissim. Duis dui nisl, interdum at est non, rutrum porttitor felis. Sed at nibh dolor. Etiam cursus scelerisque leo.
28 +
29 +Morbi vel arcu ullamcorper, tristique eros sed, condimentum sapien. Duis suscipit consequat tincidunt. Proin commodo erat in velit cursus lobortis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque id metus luctus, commodo sapien iaculis, pharetra massa. Phasellus fringilla sagittis lacus, ac laoreet massa sollicitudin ac. Aliquam luctus ex non semper dictum. Morbi vel arcu vel purus aliquet tempus. Curabitur ultrices rutrum facilisis. Morbi enim lectus, ornare quis sem bibendum, aliquet imperdiet ex. Vestibulum commodo sed neque et fermentum. Vestibulum enim elit, lobortis vitae convallis ut, auctor in velit.
30 +
31 +Vestibulum semper vulputate elit, at volutpat quam. Nullam id scelerisque libero, nec facilisis lacus. Nulla quis rhoncus arcu. Aliquam erat volutpat. In viverra, diam id rutrum volutpat, ligula dui tristique ex, et pulvinar elit ex a est. Cras magna augue, porta vel tempus vitae, placerat et felis. In ex elit, mattis vitae molestie pretium, tempus vitae tortor. Integer vehicula orci magna, in ultrices nulla volutpat sit amet. Pellentesque odio erat, hendrerit at lacinia sit amet, tempus sit amet risus. Curabitur ut laoreet justo, nec fermentum nibh. Integer tincidunt mattis sem eu cursus.