Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[Flight] Allow passing DEV only startTime as an option (#34912) · react/react@2cfb221 · GitHub
Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [Flight] Allow passing DEV only startTime as an option (#34912) · react/react@2cfb221 · GitHub
Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [Flight] Allow passing DEV only startTime as an option (#34912) · react/react@2cfb221 · GitHub
Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [Flight] Allow passing DEV only startTime as an option (#34912) · react/react@2cfb221 · GitHub
Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [Flight] Allow passing DEV only startTime as an option (#34912) · react/react@2cfb221 · GitHub
Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [Flight] Allow passing DEV only startTime as an option (#34912) · react/react@2cfb221 · GitHub
Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [Flight] Allow passing DEV only startTime as an option (#34912) · react/react@2cfb221 · GitHub
Skip to content

Commit 2cfb221

Browse files
authored
[Flight] Allow passing DEV only startTime as an option (#34912)
When you use the `createFromFetch` API we assume that the start time of the request is the same time as when you call `createFromFetch` but in principle you could use it with a Promise that starts earlier and just happens to resolve to a `Response`. When you use `createFromReadableStream` that is almost definitely the case. E.g. you might have started it way earlier and you don't call `createFromReadableStream` until you get the headers back (the fetch promise resolves). This adds an option to pass in the start time for debug purposes if you started the request before starting to parse it.
1 parent 58bdc0b commit 2cfb221

13 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/react-client/src/ReactFlightClient.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2561,6 +2561,7 @@ function ResponseInstance(
25612561
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
25622562
replayConsole: boolean,// DEV-only
25632563
environmentName: void|string,// DEV-only
2564+
debugStartTime: void|number,// DEV-only
25642565
debugChannel: void|DebugChannel,// DEV-only
25652566
){
25662567
constchunks: Map<number,SomeChunk<any>>=newMap();
@@ -2621,7 +2622,8 @@ function ResponseInstance(
26212622
// Note: createFromFetch allows this to be marked at the start of the fetch
26222623
// where as if you use createFromReadableStream from the body of the fetch
26232624
// then the start time is when the headers resolved.
2624-
this._debugStartTime=performance.now();
2625+
this._debugStartTime=
2626+
debugStartTime==null ? performance.now() : debugStartTime;
26252627
this._debugIOStarted=false;
26262628
// We consider everything before the first setTimeout task to be cached data
26272629
// and is not considered I/O required to load the stream.
@@ -2669,6 +2671,7 @@ export function createResponse(
26692671
findSourceMapURL: void|FindSourceMapURLCallback,// DEV-only
26702672
replayConsole: boolean,// DEV-only
26712673
environmentName: void|string,// DEV-only
2674+
debugStartTime: void|number,// DEV-only
26722675
debugChannel: void|DebugChannel,// DEV-only
26732676
): WeakResponse{
26742677
returngetWeakResponse(
@@ -2684,6 +2687,7 @@ export function createResponse(
26842687
findSourceMapURL,
26852688
replayConsole,
26862689
environmentName,
2690+
debugStartTime,
26872691
debugChannel,
26882692
),
26892693
);

‎packages/react-markup/src/ReactMarkupServer.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export function experimental_renderToHTML(
9191
undefined,
9292
undefined,
9393
false,
94+
undefined,
95+
undefined,
96+
undefined,
9497
);
9598
conststreamState=createFlightStreamState(flightResponse,null);
9699
constflightDestination={

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
findSourceMapURL?: FindSourceMapURLCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
};
5657

5758
functioncreateDebugCallbackFromWritableStream(
@@ -103,6 +104,9 @@ function createResponseFromOptions(options: void | Options) {
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112
}

‎packages/react-server-dom-esm/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export type Options = {
5757
findSourceMapURL?: FindSourceMapURLCallback,
5858
replayConsoleLogs?: boolean,
5959
environmentName?: string,
60+
startTime?: number,
6061
// For the Node.js client we only support a single-direction debug channel.
6162
debugChannel?: Readable,
6263
};
@@ -112,6 +113,9 @@ function createFromNodeStream<T>(
112113
__DEV__&&options&&options.environmentName
113114
? options.environmentName
114115
: undefined,
116+
__DEV__&&options&&options.startTime!=null
117+
? options.startTime
118+
: undefined,
115119
debugChannel,
116120
);
117121

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ function createResponseFromOptions(options: void | Options) {
129129
__DEV__&&options&&options.environmentName
130130
? options.environmentName
131131
: undefined,
132+
__DEV__&&options&&options.startTime!=null
133+
? options.startTime
134+
: undefined,
132135
debugChannel,
133136
);
134137
}
@@ -205,6 +208,7 @@ export type Options = {
205208
temporaryReferences?: TemporaryReferenceSet,
206209
replayConsoleLogs?: boolean,
207210
environmentName?: string,
211+
startTime?: number,
208212
};
209213

210214
exportfunctioncreateFromReadableStream<T>(

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
temporaryReferences?: TemporaryReferenceSet,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -107,6 +108,9 @@ function createResponseFromOptions(options?: Options) {
107108
__DEV__&&options&&options.environmentName
108109
? options.environmentName
109110
: undefined,
111+
__DEV__&&options&&options.startTime!=null
112+
? options.startTime
113+
: undefined,
110114
debugChannel,
111115
);
112116
}

‎packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export type Options = {
5252
encodeFormAction?: EncodeFormActionCallback,
5353
replayConsoleLogs?: boolean,
5454
environmentName?: string,
55+
startTime?: number,
5556
// For the Node.js client we only support a single-direction debug channel.
5657
debugChannel?: Readable,
5758
};
@@ -103,6 +104,9 @@ export function createFromNodeStream<T>(
103104
__DEV__&&options&&options.environmentName
104105
? options.environmentName
105106
: undefined,
107+
__DEV__&&options&&options.startTime!=null
108+
? options.startTime
109+
: undefined,
106110
debugChannel,
107111
);
108112

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientBrowser.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type Options = {
5151
findSourceMapURL?: FindSourceMapURLCallback,
5252
replayConsoleLogs?: boolean,
5353
environmentName?: string,
54+
startTime?: number,
5455
};
5556

5657
functioncreateDebugCallbackFromWritableStream(
@@ -102,6 +103,9 @@ function createResponseFromOptions(options: void | Options) {
102103
__DEV__&&options&&options.environmentName
103104
? options.environmentName
104105
: undefined,
106+
__DEV__&&options&&options.startTime!=null
107+
? options.startTime
108+
: undefined,
105109
debugChannel,
106110
);
107111
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientEdge.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type Options = {
7979
findSourceMapURL?: FindSourceMapURLCallback,
8080
replayConsoleLogs?: boolean,
8181
environmentName?: string,
82+
startTime?: number,
8283
// For the Edge client we only support a single-direction debug channel.
8384
debugChannel?: {readable?: ReadableStream, ...},
8485
};
@@ -109,6 +110,9 @@ function createResponseFromOptions(options: Options) {
109110
__DEV__&&options&&options.environmentName
110111
? options.environmentName
111112
: undefined,
113+
__DEV__&&options&&options.startTime!=null
114+
? options.startTime
115+
: undefined,
112116
debugChannel,
113117
);
114118
}

‎packages/react-server-dom-turbopack/src/client/ReactFlightDOMClientNode.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type Options = {
6060
findSourceMapURL?: FindSourceMapURLCallback,
6161
replayConsoleLogs?: boolean,
6262
environmentName?: string,
63+
startTime?: number,
6364
// For the Node.js client we only support a single-direction debug channel.
6465
debugChannel?: Readable,
6566
};
@@ -114,6 +115,9 @@ function createFromNodeStream<T>(
114115
__DEV__&&options&&options.environmentName
115116
? options.environmentName
116117
: undefined,
118+
__DEV__&&options&&options.startTime!=null
119+
? options.startTime
120+
: undefined,
117121
debugChannel,
118122
);
119123

0 commit comments

Comments
 (0)