mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
git-subtree-dir: turbopack git-subtree-mainline:344ddbf093git-subtree-split:fb033c4917
45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
let clientComponentLoadStart = 0;
|
|
let clientComponentLoadTimes = 0;
|
|
let clientComponentLoadCount = 0;
|
|
export function wrapClientComponentLoader(ComponentMod) {
|
|
if (!('performance' in globalThis)) {
|
|
return ComponentMod.__next_app__;
|
|
}
|
|
return {
|
|
require: (...args)=>{
|
|
const startTime = performance.now();
|
|
if (clientComponentLoadStart === 0) {
|
|
clientComponentLoadStart = startTime;
|
|
}
|
|
try {
|
|
clientComponentLoadCount += 1;
|
|
return ComponentMod.__next_app__.require(...args);
|
|
} finally{
|
|
clientComponentLoadTimes += performance.now() - startTime;
|
|
}
|
|
},
|
|
loadChunk: (...args)=>{
|
|
const startTime = performance.now();
|
|
try {
|
|
clientComponentLoadCount += 1;
|
|
return ComponentMod.__next_app__.loadChunk(...args);
|
|
} finally{
|
|
clientComponentLoadTimes += performance.now() - startTime;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
export function getClientComponentLoaderMetrics(options = {}) {
|
|
const metrics = clientComponentLoadStart === 0 ? undefined : {
|
|
clientComponentLoadStart,
|
|
clientComponentLoadTimes,
|
|
clientComponentLoadCount
|
|
};
|
|
if (options.reset) {
|
|
clientComponentLoadStart = 0;
|
|
clientComponentLoadTimes = 0;
|
|
clientComponentLoadCount = 0;
|
|
}
|
|
return metrics;
|
|
}
|