next
Version:
The React Framework
70 lines (69 loc) • 2.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
getClientComponentLoaderMetrics: null,
wrapClientComponentLoader: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
getClientComponentLoaderMetrics: function() {
return getClientComponentLoaderMetrics;
},
wrapClientComponentLoader: function() {
return wrapClientComponentLoader;
}
});
// Combined load times for loading client components
let clientComponentLoadStart = 0;
let clientComponentLoadTimes = 0;
let clientComponentLoadCount = 0;
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();
const result = ComponentMod.__next_app__.loadChunk(...args);
// Avoid wrapping `loadChunk`'s result in an extra promise in case something like React depends on its identity.
// We only need to know when it's settled.
result.finally(()=>{
clientComponentLoadTimes += performance.now() - startTime;
});
return result;
}
};
}
function getClientComponentLoaderMetrics(options = {}) {
const metrics = clientComponentLoadStart === 0 ? undefined : {
clientComponentLoadStart,
clientComponentLoadTimes,
clientComponentLoadCount
};
if (options.reset) {
clientComponentLoadStart = 0;
clientComponentLoadTimes = 0;
clientComponentLoadCount = 0;
}
return metrics;
}
//# sourceMappingURL=client-component-renderer-logger.js.map
;