UNPKG

next

Version:

The React Framework

70 lines (69 loc) 2.29 kB
"use strict"; 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