cal/packages/lib/server/perfObserver.ts

27 lines
717 B
TypeScript
Raw Normal View History

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