2022-06-10 18:38:46 +00:00
|
|
|
import { PerformanceObserver } from "perf_hooks";
|
|
|
|
|
2023-01-10 01:42:46 +00:00
|
|
|
import logger from "../logger";
|
|
|
|
|
2022-06-10 18:38:46 +00:00
|
|
|
declare global {
|
|
|
|
// eslint-disable-next-line no-var
|
|
|
|
var perfObserver: PerformanceObserver | undefined;
|
|
|
|
}
|
|
|
|
export const perfObserver =
|
|
|
|
globalThis.perfObserver ||
|
2022-06-14 15:39:50 +00:00
|
|
|
new PerformanceObserver((items) => {
|
2022-06-10 18:38:46 +00:00
|
|
|
items.getEntries().forEach((entry) => {
|
2022-06-28 00:38:01 +00:00
|
|
|
// Log entry duration in seconds with four decimal places.
|
2023-01-10 01:42:46 +00:00
|
|
|
logger.debug(entry.name.replace("$1", `${(entry.duration / 1000.0).toFixed(4)}s`));
|
2022-06-10 18:38:46 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2022-06-14 15:39:50 +00:00
|
|
|
perfObserver.observe({ entryTypes: ["measure"] });
|
|
|
|
|
2022-06-10 18:38:46 +00:00
|
|
|
if (process.env.NODE_ENV !== "production") {
|
|
|
|
globalThis.perfObserver = perfObserver;
|
|
|
|
}
|
|
|
|
|
|
|
|
export default perfObserver;
|
2022-06-14 15:32:37 +00:00
|
|
|
|
|
|
|
export { performance } from "perf_hooks";
|